crontab kullanımı
16 Nisan 2012 Yorum bırakın
crontab dosyası ve crontab komutu belirli aralıklarla çalıştırmak istediğiniz komutların, uygulamaların çalıştırılmasını otomatize eden bir dosya ve ilgili komuttur. crontab komutu -l, -r, -i, -e, -u takılarını alır. Takılar:
-u : Komutun etki edeceği kullanıcıyı belirler. -u takısı verilerek kullanıcı belirtilmezse, komutu giren kullanıcının crontabına etkir.
-l : Kullanıcının crontabını listeler.
-r : Kullanıcının crontabını siler. Dikkat! Onay beklemez.
-i : -r takısını modifiye ederek, komutun onay beklemesini sağlar.
-e : crontab dosyasına yeni satır ekler. Bunun için VISUAL ve EDITOR çevresel değişkenlerine bağlı olarak değişebilen bir editörle geçici bir dosya oluşturur. Değişiklikler tamamlandıktan sonra, dosyayı save etmeniz durumunda, ilgili satırlar crontab’ a yüklenir.
-u ile diğer takıları kombine kullanarak, farklı kullanıcıların cron işlerini de düzenleyebilirsiniz. Örneğin;
$ crontab -u asterisk -l
$ crontab -u asterisk -ir
gibi.
-e takısını kullanmak yerine crontab’ a eklenecek satırları herhangi bir dosyadan da yükleyebilirsiniz ki; birden fazla benzeri sunucu kurulumundan sonra vardiyalı çalışan programlarla ilgili girileri her seferinde tekrar tekrar girmekten bu sayede kurtulabilirsiniz. Bunun için, ilgili dosyayı crontab’ a göstermeniz gerekir;
$ crontab <full path>
Dikkat! Bu komut var olan crontab dosyasında bulunan cron işlemlerini silip ardından belirtilen dosyadakileri ekler.
Eğer sisteminizde SELinux bulunuyorsa, kullandığınız linux dağıtımına göre değişen, SELinux güvenlik karakter dizisini barındıran MLS_LEVEL ya da SELINUX_ROLE_TYPE değişkenini de cron işlerine eklemek için -s takısını kullanabilirsiniz. Yalnız, bunun için crontab’ a eklenecek işlemlerin bir dosya üzerinden yüklenmesi gerekecektir. Takının kullanımı ise;
$ crontab -s <full path>
şeklindedir.
-e takısıyla crontab’ a yeni satırlar ekleyerek, belirli saat/tarihlerde komut ya da uygulamaları çalıştırmak isteyebilirsiniz. Bunun için, aşağıda belirtilen formata uygun zamanı ve çalıştırılacak komutları satırlar halinde ekleyebilirsiniz.

Örneğin root kullanıcısı için
$ sudo crontab -u root -e
komutunu girdikten sonra editörde açılan geçici dosyaya;
15 05 * * * /usr/bin/apt-get update
satırını eklemeniz durumunda her sabah 05:15′ te paket index dosyalarının senkronize edilmesini sağlayabilirsiniz.
crontab satırlarında belirli aralıklarla çalıştırılmasını istediğiniz işlemlerin yapılmasını tek bir satırda da halledebilirsiniz.
*/2 değerini dakika değeri yerine girmeniz durumunda her iki dakikada bir
0-10/2 değerini dakika değeri yerine girmeniz durumunda belirtilen saat ve tarihlerde ilk 10 dakika içerisinde iki dakikada bir
komutlarınız çalıştırılacaklardır.
@yearly, @daily, @hourly, @monthly, @reboot parametreleri de anlamlarından tahmin edebileceğiniz zamanlarda komutların çalıştırılmasını sağlayacaktır. Örneğin her ayın başında belli bir klasörü temizlemek istiyorsanız;
@monthly /bin/rm <path>/*
işinizi görecektir.
Ancak, bu ve asteriskli parametre tipleri bütün dağıtımlar tarafından desteklenmemektedir, crontab bir hata mesajı da döndürebilir.
Bunların dışında, örneğin; eğer belirttiğiniz tarih, haftanın farklı bir gününe denk geliyorsa girilen her iki parametre de geçerli kabul edilip her iki tarihte de komutun çalıştırılacağını; crontab’ ın satırlardaki değerleri kümülatif olarak değerlendirdiğini unutmamanız gerekir.
Aksi belirtilmediği sürece, crontab işlem çıkışını cron işlemini yaptıran kullanıcıya gönderir. Bunu engellemek ya da çıkışın gönderileceği kişiyi değiştirmek için MAIL değişkeni kullanılır.
MAIL=””
şeklinde değiştirilen MAIL değişkeni crontab’ ın çıkışını kimseye göndermemesini sağlayacaktır. Bunun yerine çift tırnaklar arasına cron işini çalıştıran ya da çalıştırmayan herhangi bir kullanıcının adı da yazılabilir.
Programın çıkışından tamamen kurtulmak için; STDOUT ve STDERR yönlendirmelerini yapmanız gerekir. Bunun için de çalıştırılmasını istediğiniz komutun sonuna,
> /dev/null 2>&1
eklemeniz gerekir. Bu eklentinin ilk bölümü olan > /dev/null komutun çıktısını verecek STDOUT‘ u /dev/null dosyasına; kara deliğe yönlendirir. İkinci bölümü olan 2>&1 ise STDERR‘ i, daha önceden /dev/null’ a bağlanmış STDOUT’ a yönlendirir.
Son olarak girilen komutları her seferinde pathleri ile beraber yazmak yerine crontab dahilinde genel bir PATH çevresel değişkeni belirleyeblirsiniz. Örneğin;
$ crontab -l
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/<kullanıcı adı>
@yearly <komut>
*/10 * * * * <komut>
Screen nedir? Screen tek bir terminal ekranı içerisinden içerisinde birden fazla terminal emülasyonu çalıştırmanızı sağlayan bir uygulamadır. Pencere çoklayıcısı olarak da bilinir. Teminal üzerinden oluşturacağınız her bir terminal emülasyonu üzerinden farklı bir programı çalıştırabilirsiniz.
Özgür Yazılım ve Linux Günleri 2012 dahilinde, 31 Mart tarihinde düzenlenen Asterisk Semineri’ nin sunum dökümanını indirmek için 



