Pardus’ta Periyodik İşlemler : Cron Kullanımı

Bilgisayar kullanırken, birtakım işlemlerin kendiliğinden belli periyotlar halinde yapılmasını isteyebilirsiniz. Bu işlemler her ayın son pazar günü /tmp dizinin içeriğinin boşaltılması, dakikalık olarak işlemciye binen yükün bir dosyaya yazılması ve bu dosyanın saatlik olarak bir adrese e-posta olarak gönderilmesi, bilgisayarın her gece saat 03:00'da yeniden başlatılması, dosyaların her pazartesi başka bir bilgisayara gönderilip yedeklenmesi gibi işlemler olabilir. Pardus ve dolayısıyla diğer GNU/Linux dağıtımları altında bu işlemleri gerçekleştirmek için crontab (CRON TABle) uygulaması kullanılabilir.

Komut satırında çalışan inceleyecek olursak, crontab uygulamasının kullanımını
crontab -e komutu, kullanıcının crontab dosyasının düzenlenmesi;
crontab -l komutu, kullanıcının crontab dosyasının listelenmesi;
cronrab -r komutu ise kullanıcının crontab dosyasının silinmesi için kullanılır.

Peki crontab dosyası nedir? Crontab dosyası, az önce açıkladığımız periyodik işlemlerin gerçekleştirilmesi için kullanıcı tarafından crontab uygulamasının dil bilgisi kurallarına uygun olarak yazılan kodları içeren bir dosyadır.
Crontab dosyasının sözcük dizim kuralı şu şekildedir:
d s g a h komut
Bu dizilimdeki ifadeler şu anlama gelmektedir :

d: 0 – 59 arasında değer alan dakika
s: 0 – 23 arasında değer alan saat
g: 1 – 31 arasında değer alan gün
a: 1 – 12 arasında değer alan ay
h: 0 – 6 arasında değer alan haftanın günü (0=pazar)
komut: Çalıştırılması istenen komut

Söz diziminin daha rahat anlaşılabilmesi için aşağıdaki örnekler yol gösterici niteliktedir :

* * * * * echo “Dakikada bir”
0 * * * * echo “Her saat başı”
10 * * * * echo “Her saati 10 dakika geçe”
0,15 * * * * echo “0. ve 15. dakikalarda”
* */2 * * * echo “2 Saatte bir”
0 0 * * 0 echo “Her pazar gece yarısı”
15 10 * * * echo “Hergün 10:15”
* * * * 6 echo “Her cumartesi”
* * * * 3,5 echo “Çarşamba ve cuma günleri”
0 0 5 11 4 echo “Perşembe gününe rastlayan her 5 Kasım”

Böylece basit olarak crontab söz dizimini öğrenmiş bulunuyoruz. Şimdi biraz el becerisi kazanmak adına işe koyulalım.

Öncelikle komut satırını açalım ve Pardus'ta Cron Görev Zamanlayıcı hizmetinin çalışıp çalışmadığını denetleyelim :

guDa@baDibere ~ $ service vixie_cron info
Servis | Durum | Otobaşla | Açıklama
--------------------------------------------
vixie_cron | çalışıyor | evet | Cron Görev Zamanlayıcı

Görünüşe göre hizmetimiz çalışıyor. Çalıştığını doğruladıktan sonra crontab dosyasını düzenlemeye geçelim.

İlk olarak cron_deneme.txt dosyasına dakikada bir zaman bilgilerini yazdıran bir söz dizimi yazalım. Komut satırını açıp crontab -e komutunu verdikten sonra komut satırında çalışan Nano isimli metin düzenleyicisiyle, crontab dosyamızı aşağıdaki söz dizimini içerecek şekilde değiştirelim :
* * * * * date > /home/KULLANICI_ADINIZ/cron_deneme.txt
Ctrl+O ile kaydedip Ctrl+X ile çıkış yaptıktan sonra ev dizininde bulunan dosyamızı gözleyecek olursak, dosyamızı düzenledikten sonra dakikada bir kez olmak üzere dosya içeriğinin anlık zaman bilgileriyle değiştiğini görmüş olacağız.

İşi biraz daha ciddileştirip, /tmp dizinin içindeki dosya ve dizinleri her pazar günü gece yarısı silmek istersek :
0 0 * * 0 rm -rf /tmp/*
Her 10 dakikada bir dizüstü bilgisayarımızın pil bilgilerini ve işlemci sıcaklığını kaydettikten sonra, kaydettiğimiz dosyaları e-posta olarak gönderdiğini varsaydığımız betiği çalıştırmak istersek :

*/10 * * * * cat /proc/acpi/battery/BAT0/info >> battery.txt
*/10 * * * * cat /proc/acpi/thermal_zone/TZS0/temperature >> temp.txt
*/10 * * * * mailsend

komutlarını kullanabiliriz. Son örneğimizden anlayacağınız üzere, crontab dosyamıza birkaç satır girdi yazılabilmektedir ve bu girdilerin periyotlarının aynı olma gibi bir zorunluluk yoktur.

Cron işlemleri basit olarak bu kadar. Gerisi kullanacak olanın hayal gücüne kalıyor gibi bir şey Wink



Bu yazının lisansı Pardus-Linux.Org eDergi 7. Sayı'daki lisansı ile aynıdır. Lisanslar hakkında bilgiyi lisanslar sayfamızda bulabilirsiniz.

Etiketler :

Yorumlar