Sistemde yapılması gereken rutin işlerin zamanı geldiğinde otomatik olarak yapılması işine zamanlanmış görevler deniyor. Bu rutin işlere örnek söylemek gerekirse; benim her pazartesi sistemi yedeklemem gerekiyor diyelim, bunu her pazartesi elle yapmak yerine bu işi zamanlanmış görevlere ekleyerek otomatiğe bağlayabilirim. İşte zamanlanmış görevler bu ve bunun gibi durumlarda sıkça kullanılıyor.
- /etc/init/init.d – sistem açıldığında açılacak deamonlar burada yer alır. Örn: cron,networking,apache2,ftpd,sshd,mysql vb.
/etc/init.d/cron status #Belirtilen daemonın çalışma durumunu öğrenmek için kullanılır.
systemctl status cron #Belirtilen daemonın çalışma durumunu öğrenmek için kullanılır.
- /etc/init.d/cron – ardından 2 defa tab tuşuna basarak bu daemonla yapılabilecek işlemler listelenir.
- /var/spool/cron/ctontabs/ (kullanıcılara ait crontablar burada tutulur.)
- Sistem crontab dosyası (/etc/cron) : Linux’ta cron servisinin çalışmasıyla birlikte belli periyotlarla yürütülen görevler crontab’da tutulur.
sudo crontab -e -u UserName (Belirtilen kullanıcının crontab'ına girmek için kullanılır.)
Cron
Rutin tekrarları sağlayan zamanlanmış görevleri yerine getirmemizi sağlayan servisimizin adı cron
‘dur.
Crontab’ın bulunduğu dosya yolu çoğu zaman “/etc/crontab” şeklindedir ve $ crontab -e komutu ile otomatik olarak erişilebilir. Karşımıza gelecek olan ekranda basit bir text editörü olacaktır ve en alt satır ise bizim için ayrılmış durumdadır.
┌───────────── dakika (0 – 59)
│ ┌───────────── saat (0 – 23)
│ │ ┌───────────── takvim günü (1 – 31)
│ │ │ ┌───────────── ay (1 – 12)
│ │ │ │ ┌───────────── gün (0 – 6) (0=Pazar, 1=Pazartesi … 6=Cumartesi
│ │ │ │ │ ve ayrıca sadece Pazar günü için 7=Pazar)
│ │ │ │ │
│ │ │ │ │
* * * * * çalıştırılmak istenen komut
Yukarıdaki crontab evrenseldir ve crontab çalıştırmak için sisteminizin unix olması yeterlidir.
Şöyle ki; ben her ayın ilk günü sabah saat 07:30’da /home/kullaniciadi dizinimin yedeğini /yedek/kullaniciadi klasörüme almak istiyorum.
Bunun için yazmam gereken komut aşağıki gibi olmalıdır.
$ 30 07 1 * * tar -zcvf /yedek/kullanici.tar.gz /home/kullanici.tar.gz
Başka bir örnek;
(Her dakika, date komutundan aldığı veriyi sayac.txt dosyasına ekle.)
$ * * * * * date >> ~/Desktop/sayac.txt
Sunucumda aldığım bir yedeği, farklı bir sunucuya nasıl gönderebilirim acaba? Yardımcı olabilir misiniz?
scp ile yapabilirsin.
Evet, Bület beyin önerisi gibi scp kullanabilirsiniz. Örnek verelim;
$scp GönderilecekDosyaAdi sshkullaniciadi@sunucuipadresi:/DosyaninGönderileceğiDizin
Örnek ;
scp yedek.sql [email protected]:/home/