Crontab ile Tasarruf Edin
🔔 Sosyal medya kanallarımızı takip etmeyi unutmayın!
Crontab Nedir?
Crontab ile zamanlanmış görevleri otomatikleştirebilirsiniz. Aslında “cron table” kelimesinin kısaltmasıdır. Basitçe söylemek gerekirse, belirlediğiniz zamanlarda otomatik olarak çalışacak komutların veya script’lerin listesi bu araç ile yönetilir. Bu dosya, sizin belirlediğiniz görevleri içerir.
Her kullanıcının kendi crontab dosyası olabilir. Terminalde “crontab -e” komutunu yazarak kendi crontab dosyanızı oluşturabilir veya düzenleyebilirsiniz. Kendine özgü bir çalışma şekli var. İşlerinizi, dakikalara, saatlere, günlere, aylara ve/veya haftanın belirli günlerine göre planlayabilirsiniz.
Crontab Ne İçin Kullanılır?
Sistem yöneticileri ve/veya kullanıcılar çeşitli işler için crontab kullanabilir. Bu işlevsel özellik sayesinde, genellikle otomatik yedek alma, güncelleştirme, rapor oluşturma gibi işlemleri bir zamana bağlayabilirsiniz.
Görev Oluşturma
Örneğin, her gün gece saat 2:30’da bir yedekleme script’inin çalıştırılmasını istiyorsunuz. Bunun için “crontab -e” komutunu çalıştırın ve ardından aşağıdaki satırı ekleyin.
salih@bilgihouse:~# crontab -e
30 2 * * * /data/bh/scripts/backup_script.sh
30 | Bu, komutun çalışacağı dakikadır (0 ile 59 arası). Yani saat 02:30. |
2 | Bu, komutun çalışacağı saattir (0 ile 23 arası, 24 saatlik format). Yani 02:30. |
*** | Bu üç yıldızın her biri, “her” anlamına gelir. |
İlk * | Ayın her günü. |
İkinci * | Her ay. |
Üçüncü * | Haftanın her günü. |
/data/bh/scripts/backup_script.sh | Yedekleme script’inizin tam yolunu belirtir. |
Kullanım örnekleri için crontab.guru ‘yu inceleyebilirsiniz.
Kullanıcılara Göre Yetkilendirme
Kullanıcılar, ‘crontab -e‘ komutunu kullanarak kendi görevlerini düzenleyebilirler.
salih@bilgihouse:~# crontab -e
Bu işlem, kullanıcıların yalnızca kendi görevlerini yönetmelerine olanak tanır. Böylece, bir kullanıcının başka bir kullanıcının crontab dosyasına erişme hakkı yoktur. Bu, sistem güvenliği açısından önemli bir özelliktir, çünkü her kullanıcı yalnızca kendi sorumluluğundaki işlemleri görebilir ve düzenleyebilir.
Ayrıca, kullanıcıların yetkilerini kısıtlamak ya da genişletmek mümkündür. Bunun için /etc/cron.allow ve/veya /etc/cron.deny dosyalarını kullanmanız gerekiyor, varsayılan olarak bu dosyalar sistem de (genellikle) bulunmaz.
Farklı Bir Kullanıcının Crontab’ını Yönetme: Listeleme ve Düzenleme
Başka bir kullanıcının crontab dosyasını düzenleyebilirsiniz, ancak bunun için genellikle root yetkisine ihtiyacınız olacaktır. Bu dosyaların doğrudan düzenlenmesi, sistemin güvenliği ve bütünlüğü için kısıtlanmıştır. Bir kullanıcının crontab dosyasını değiştirmek demek, o kullanıcının adına sistemde belirli komutları çalıştırmak ve/veya o kullanıcı adına işlem yapmak anlamına gelir. Bu nedenle, bu tür hassas işlemleri yalnızca yetkili kullanıcılar (genellikle root) yapabilir.
Potansiyel olarak tehlikeli olabilecek görevlerin yalnızca yetkili kişilerin yönetiminde olması gerekir.
Listeleme
Aşağıdaki komut ile başka bir kullanıcının crontab’ını listeleyebiliriz. Bu işlem için de genellikle root yetkisi gerekir.
salih@bilgihouse:~# sudo crontab -u < kullanıcı adı > -l
Düzenleme
Aşağıdaki komut ile başka bir kullanıcının crontab’ını düzenleyebilirsiniz. Bu işlem için de mutlaka root yetkisi gerekir.
salih@bilgihouse:~# sudo crontab -u < kullanıcı adı > -e
Sorun Çözme
Log Dosyalarına Bakma
Crontab’ın çalışıp çalışmadığını anlamanın en iyi yolu log dosyalarına bakmaktır.
- /var/log/syslog
- /var/log/cron.log
- /var/log/messages
Bu dosyalarda CRON kelimelerini arayarak cron işinizin yürütülüp yürütülmediğini veya herhangi bir hata verip vermediğini inceleyebilirsiniz. Örneğin, aşağıdaki komut ile anlık CRON akışını takip edebilirsiniz.
salih@bilgihouse:~# sudo tail -f /var/log/syslog | grep CRON
Crontab Servisinin Durumunu Kontrol Etme
Crontab servisinin çalışıp çalışmadığını kontrol etmek için aşağıdaki komutları kullanabilirsiniz.
salih@bilgihouse:~# sudo systemctl status cron # Debian/Ubuntu tabanlı sistemler
salih@bilgihouse:~# sudo systemctl status crond # CentOS/RHEL tabanlı sistemler
Eğer çalışmıyorsa, aşağıdaki komut ile çalıştırabilirsiniz.
salih@bilgihouse:~# sudo systemctl start cron
salih@bilgihouse:~# sudo systemctl enable cron
Sonuç
Yapılan bu işlem kullanıcıya zaman tasarrufu sağlar ve insan kaynaklı hataların olasılığını en aza indirir, böylece günlük iş akışının daha düzenli olması sağlanır.
Ödev
Her gün sabah 9’da bir komutun çalışmasını istiyorsunuz. Buna göre crontab dosyasına nasıl bir satır eklemeniz gerekiyor.
Faydalı olması dileğiyle
Gelişmelerden haberdar olmak için bilgihouse.com ve sosyal medya kanallarımızı ziyaret etmeyi unutmayın.