27 Aralık 2022 • 20 dakikalık okuma
Linux işletim sisteminde zamanlanmış görev oluşturmak için cron servisi kullanılır. Cron servisi kullanılarak sürekli tekrar eden işlemler için istenilen zaman sıklığında otomatik çalıştırılmak üzere görevler tanımlanabilir. Örneğin; her gün bir dizinin yedeğini almak, her 5 dakikada bir dizine dosya yazdırmak, haftada bir kere kullanılmayan eski dosyaları silmek, ayda bir sistemi güncellemek vb.
Yeni bir zamanlanmış görev (ing.: cron job) oluşturmak için crontab -e komutu kullanılır. Zamanlanmış görevlerin kaydedildiği dosyaya cron tablosu (ing.: cron table) denir.
Terminal ekranından;
crontab -e
komutu yazılır;
Açılan dosyada en alta satıra çalıştırmak istediğimiz kodlar ve zamanlamaları tanımlanır;
Örneğin; cron servisinin çalışmasını kontrol için, dakikada bir çalışan ve tarihi bir dosyaya yazdıran görev tanımlaması;
* * * * * date >> /home/melih/Masaüstü/log.txt
dosya yazılır ve kaydedilip kapatılır. Düzenleme modundan çıkıldıktan sonra zamanlanmış görev çalışmaya başlar;
Oluşturulan zamanlanmış görevleri listelemek için terminal ekranından;
crontab -l
komutu yazılır;
Görevlerin çalışmalarının zamanlaması için; dakika (m), saat (h), ayın günü (dom), ay (mon), haftanın günü (dow) sıralamasıyla tanımlama yapılır;
Örneğin; * * * * * tanımlaması görevi dakikada bir defa çalıştırır.
m | h | dom | mon | dow | Açıklama |
---|---|---|---|---|---|
* | * | * | * | * | Her dakika çalışır |
* /2 | * | * | * | * | Her iki dakikada bir çalışır |
* /45 | * | * | * | * | Her 45 dakikada bir çalışır |
1 | * | * | * | * | Dakika 1 olduğunda çalışır |
2 | * | * | * | * | Dakika 2 olduğunda çalışır |
45 | * | * | * | * | Dakika 45 olduğunda çalışır |
* | 23 | * | * | * | Saat 23 olduktan sonra her dakika çalışır |
45 | 23 | * | * | * | Saat 23 dakika 45 oluğunda çalışır |
* | * | 15 | * | * | Her ayın 15 olduğunda her dakika çalışır. |
* | 23 | 15 | * | * | Her ayın 15 olduğunda saat 23 olduktan sonra her dakika çalışır. |
45 | 23 | 15 | * | * | Her ayın 15 olduğunda saat 23 dakika 45 olduğunda çalışır. |
45 | 23 | * | 2 | * | Şubat ayında saat 23 dakika 45 olduğunda çalışır. |
45 | 23 | * | * | 0 | Pazar günü saat 23 dakika 45 olduğunda çalışır |
Daha fazla detay için; crontab guru sitesi ziyaret edilebilir.
Zamanlanmış görev olarak .sh dosyası tanımlamak için ilgli dosyaya çalıştırma izni verilmelidir. Örneğin; her gün 23:59 olduğunda Belgelerim dizinini yedekle;
Script dosyası komutları;
#!/bin/bash
echo "Belgelerim yedekleniyor..."
cp -r /home/melih/Masaüstü/Belgelerim /home/melih/Masaüstü/BelgelerimYedek
echo "Belgelerim yedeklendi."
Script dosyasına çalıştırma izni verilmelidir;
chmod +x backup-belgelerim.sh
ls -lah
Her gün 23:59 olduğunda script dosyasını çalıştır;
59 23 * * * /home/melih/Masaüstü/backup-belgelerim.sh
Birden fazla zamanlanmış görev tanımlamak için;
crontab -e
Mevcut zamanlanmış görev tanımının altına yeni zamanlanmış görev tanımlanır;
Zamanlanmış görevin çalışıp çalışmadığını görmek için cron logları incelenebilir;
var/log/cron
ya da
/var/log/syslog
komutları çalıştırılır.
Zamanlanmış görev tanımlamalarını yedeklemek için;
crontab -l > my-crontab-backup.txt
komutları çalıştırılır.