Aralık 7 2021

Yaz bak, sonra unutursun (Part1)

Python Tarih / Saat biçimleri

Python’ da bir şeyler yazarken neredeyse en çok uğraştıran konu tarihleri istediğim formata sokmak. Bu nedenle aşağıdaki kısa örnekleri buraya ekliyorum ilerde de dönüp bakabileyim diye.

Lokal zamanı ISO 8601 formatına çevirmek

*now yerine utcnow da kullanabilirisiniz.

import datetime 
datetime.datetime.now().isoformat() 
>>> 2021-12-06T14:28:23.382748

Lokal zamanı ISO 8601 formatına mikrosaniyeler olmadan çevirmek

import datetime 
datetime.datetime.now().replace(microsecond=0).isoformat() 
>>> 2021-12-06T14:30:43

UTC olan zamanı timezone bilgisi ile ISO 8601 formatına çevirmek

import datetime 
datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc).isoformat() 
>>> 2021-12-06T01:31:12.467113+00:00 

Tarih verisini istediğiniz biçimde gösterebilmek için “strftime” özelliğini kullanarak tarih / saat verinizi biçimlendirebilirsiniz. Bunun için gerekli gösterim parametreleri aşağıdaki tabloda görüldüğü gibidir.

import datetime
x = datetime.datetime.now()
print(x.strftime("%Y-%m-%d %H:%M:%S"))
%aHaftanın Günü Kısa gösterimWed
%AHaftanın Günü Uzun gösterimWednesday
%wHaftnın kaçıncı günü olduğu (0-6 arasında, 0 Pazar)3
%dAyın kaçıncı günü olduğu (01-31 arasında)31
%bAyın adı Kısa gösterimDec
%BAyın adı Uzun gösterimDecember
%mAyın sayısal gösterimi 01-1212
%yYılın son iki hanesi18
%YYılın uzun gösterimi2018
%HSaat 00-23 arası17
%ISaat 00-12 arası5
%pAM/PM BilgisiPM
%MDakika 00-59 arası41
%SSaniye 00-59 arası8
%fMilisaniye 000000-999999 arası548513
%zUTC offset100
%ZTimezoneCST
%jYılın kaçıncı günü olduğu 001-366 arası365
%UHaftanın ilk gününü pazar kabul ederek yılın kaçıncı haftası olduğu 00-53 arası52
%WHaftanın ilk gününü pazartesi kabul ederek yılın kaçıncı haftası olduğu 00-53 arası52
%cYerel gösterimle tarih ve saat bilgisiMon Dec 31 17:41:00 2018
%CYüzyıl gösterimi20
%xYerel gösterimle sayısal tarih bilgisi 12/31/2018
%XYerel gösterimle saat bilgisi17:41:00
%%“%” İşareti%
%GISO 8601 formatında yıl2018
%uISO 8601 formatında haftanın günü (1-7)1
%VISO 8601 formatında hafta sayısı (01-53)1

Category: Genel | LEAVE A COMMENT
Aralık 1 2021

Bilmende Fayda Var (Linux Tips)

Bak bu yazıda bir sürü şey var. Gerçek diyorum. Okuyabilecek kadar dayanabilirsen senin için çok iyi olur, çok da iyi güzel olur. Lakin ki öyle de değildir. Kimsenin process’ ine herkes karışamaz.

Kill the process be hacı beybi!
ps ax | grep <kapanacak_uygulama_adı> | grep -v grep | awk '{print $1}' | xargs kill

Sürekli çalıştırıp ardından düzenleme yapmak için kapatmanız gereken bir scriptiniz varsa yukardaki komut satırı sizi büyük bir dertten kurtarabilir.

Örneğin servis.py isimli dosyayla sürekli uğraşmanız gerekmekte. Adı üstünde “servis” belli ki arka planda sürekli çalışacak ve hiç kapanmayacak. Taa ki siz isteyene kadar. Olur da kapatmak gerekirse yukardaki gibi bir satırlık kod sizi arka planda çalışan tüm PID’ leri bulup tek tek kill <pid> komutu gönderme zahmetinden kurtarıyor.

Şimdi bu satırı biraz açalım. Açalım ki bize de yazmaya değer bir yazı çıksın 🙂

ps ax

Linux kullananlar zaten biliyordur. Yeni başlayanlar için kopya vereyim “ps” (process / işlem). Yani sistemde çalışan herşeyi göster bakayım komutu.

Sonrasında gelen “a” (show process for ALL users). Yani herkesin çalışmakta olan tüm işlerini göster. “-a” değil sakın karıştırmayın.

Şimdi geldi bilinmeyeni bilmeye: “x”(also show processes not attached to a terminal). Yani arka planda çalışıp görükmeyenleri de gösteriver.

Buraya kadar ne oldu? Arkaplanda çalışan uygulamalar da dahil kimsenin gizlisi saklısı kalmadı. Herşey meydanda. Tabii bu kadar çok olunca bir şekilde ayıklamak lazım. İşte ikinci komut :

grep <kapanacak_uygulama_adı>

grep: Grep, belirtilen bir kalıpla eşleşme içeren satırlar için bir veya daha fazla girdi dosyası arar ve eşleşen satırların çıktısını verir. Yani kısaca aradığın kelime / kelime grubu / sayısal değer/ ne yazdıysan işte onu konsol çıktılarında arar. Aslında bu doğru tabir de değil. grep’ in kullanım klavuzunu zahmet edip biraz okursanız daha net anlarsınız.

Sıkı durun 3. komut da GREP. sıkıldıkça grep, her derde grep, yaşasın grep!!!

grep -v grep 

Ne demiş bir klavye fedaisi: Grep: Grep’ i Grep’le, Grep’çe, Grep’ li ya da Grep’siz arama çabasıdır. İşte bu sözü kendimize düstur ediniyoruz ve konsol çıktımızdaki grep’ li satırları da temizliyoruz. Bunun sonucunda sadece kapatmak istediğimiz uygulama ile ilgili bilgiler ekranda kalıyor.

4. Komut için esas duruşa geçin çünkü AWK geliyor!

awk '{print $1}' 

Şimdi yazacaklarım AWK’ a bir küfür gibi olacak ama en basit haliyle awk: satırlar arasındaki boşlukları kullanarak kelimeleri ayrıştırır. LPIC sınavında bile çıkacak kadar önemli bir komuttur. Bir de yanında olmazsa olmazı SED komutu vardır. Bu ikisini bil, sonra tüm Marvel Evreni, DC Evreni ne kadar süper kahraman varsa tokatla. Türk işi tahin pekmez gibidir ikisi. GOD Mode ON!!! Şu örnekle daha iyi anlarsınız ne demek istediğimi:

echo "selam dostum naber?" | awk '{print $2}'
dostum

echo ile bir cümle yazdırdım ekrana ve çıktısındaki ikinci kelimeyi ayıkladım. Sonuc: “dostum” kelimesi geldi ekrana. Eğer print $2 yerine print $0 yazsaydım bu sefer “selam dostum naber?” yazacaktı çünkü $0 çıktının tümünü verir. Siz de çeşitli denemeler yaparak daha iyi kavrayabilirsiniz bu komutu. Ben en çok csv dosyalarında istediğim sütunlara hızlıca bakmak için kullanırım. echo ” selam dostum naber?” | awk ‘{print $1″ “$3}’ bakın bakalım ne geliyor ekrana?

Kısa bir Awk güzellemesinden sonra konumuz dönelim. Komuttaki awk ‘{print $1}’ komutu, grep ile ayıkladığımız çalışan işlemlere ait PID numaralarını (process ID) döndürmekte.

xargs kill

İşe geldik sona Xargs: Xargs ile bir komuttan gelen standart çıktıyı başka bir komuta argüman olarak yönlendirebilirsiniz. Bizim örnekte bu çıktılar PID listesi olacak: İşte feraset, işte firefox’ a ait PID’ ler!.

ps ax | grep firefox | grep -v grep | awk '{print $1}'
10368
10432
10464
10523
10586
10618
10689
10847
13173
17819
17949
18056
18395

xargs kill ile yukarda gördüğünüz tüm PID numaraları kill komutuna argüman olarak gitmekte ve kaç tane PID varsa o kadar sayıda kill komutu çalışarak ortalığın kill’ına koymakta. Kill’em All hadi sağlıcakla kalın. Eyyorlamam bu kadar.

Category: Genel | Bilmende Fayda Var (Linux Tips) için yorumlar kapalı