Cron Nedir?
Cron, Unix benzeri sistemlerde otomatik görevleri planlamak için kullanılan bir zamanlayıcıdır. Belirli zaman dilimlerinde, günlerde veya haftalarda belirli komutların çalıştırılmasına olanak tanır. Bu, sistem yönetimi veya sürekli bakım gereksinimleri gibi düzenli görevlerin otomatikleştirilmesine olanak sağlar. Her kullanıcı kendi cron görevlerini tanımlamak için crontab dosyasını kullanabilir; ancak sistem genelinde görevler eklemek için /etc/cron.d dizini tercih edilir.
/etc/cron.d Dizin Yapısı
/etc/cron.d dizini, sistem genelinde cron görevlerinin tanımlandığı bir alandır. Bu dizin içerisinde bulunan dosyalar, belirli zamanlama ve komutlar içerebilir. Buradaki dosyalar, ayrı ayrı cron görevlerini barındırır ve her dosya, sistemin crond hizmeti tarafından otomatik olarak okunur. Bu anlamda her dosya, genel bir crontab dosyası işlevi görür.
Yeni Cron Görevi Oluşturma
Yeni bir cron işi eklemek için /etc/cron.d dizinine bir dosya oluşturmak gerekir. Bu dosya, sistemle ilgili bir komut veya scriptin belirli bir zaman diliminde çalıştırılmasını sağlayabilir. Bunun için, öncelikle bir yazı editörüyle yeni bir dosya oluşturmak gerekmektedir.
Dosya Oluşturma
1. Dosya Adı Belirleme: Oluşturulacak dosyanın ismi, genellikle işlevine göre anlamlı bir ad olmalıdır. Örneğin, `backup` adlı bir dosya, yedekleme görevleri için kullanılabilir.
2. Yazı Editörünü Açma: Terminalde aşağıdaki komut ile yeni dosya oluşturulabilir. Örneğin, `nano` veya `vi` gibi bir editör kullanılabilir.
“`bash
sudo nano /etc/cron.d/backup
“`
Cron Zamanlama Formatı
Oluşturulan dosya içerisinde cron’un zamanlama formatını kullanarak görev tanımlamak gerekmektedir. Bu format aşağıdaki gibidir:
“`
kullanıcı komut
“`
Burası şu şekilde açıklanabilir:
– İlk “: Dakika (0-59)
– İkinci “: Saat (0-23)
– Üçüncü “: Ayın Günü (1-31)
– Dördüncü “: Ay (1-12)
– Beşinci “: Haftanın Günü (0-7) (0 veya 7, Pazar)
Örneğin, her gün saat 2’de çalışmasını istediğiniz bir yedekleme scripti için aşağıdaki satırı ekleyebilirsiniz:
“`
0 2 kullanıcı /path/to/backup_script.sh
“`
Burada `kullanıcı` kısmında scriptin çalışacağı kullanıcı adı belirtilmelidir.
Dosyayı Kaydetme ve Çıkma
Yazı editöründe düzenlemenin tamamlanmasının ardından, dosya kaydedilip çıkılmalıdır. Nano kullanılıyorsa, `CTRL + O` ile kaydedilip, ardından `CTRL + X` ile çıkılır. Vi kullanılıyorsa, `:wq` komutuyla kaydedilerek çıkılabilir.
İzinlerin Kontrolü
Oluşturulan dosyanın, doğru izinlere sahip olduğundan emin olunmalıdır. Genel olarak, bu dosyaların `644` iznine sahip olması beklenir. İzinleri kontrol etmek ve gerekirse düzenlemek için aşağıdaki komut kullanılabilir:
“`bash
sudo chmod 644 /etc/cron.d/backup
“`
Cron Servisinin Yeniden Başlatılması
Yeni cron işinin aktif olması için crond hizmetinin yeniden başlatılması gerekebilir. Aşağıdaki komut kullanılarak bunu gerçekleştirmek mümkündür:
“`bash
sudo systemctl restart cron
“`
Bu işlem, yeni eklenen cron dosyasını tanımak için sistemin yeniden yapılandırılmasını sağlar.
Log Kayıtlarının Kontrolü
Cron görevlerinin düzgün bir şekilde çalıştığını doğrulamak için log kayıtlarına bakmak önemlidir. Genellikle cron görevleri başarıyla çalışma durumunda `/var/log/syslog` veya `/var/log/cron` dosyasında kaydedilir. Logları kontrol etmek için aşağıdaki komut kullanılabilir:
“`bash
grep CRON /var/log/syslog
“`
Bu komut, cron ile ilgili kayıtları filtreleyerek görüntülemenizi sağlar.
Hataların Giderilmesi
Eğer yeni eklenen cron görevi beklenildiği gibi çalışmıyorsa, hata ayıklama sürecine girilmesi gerekmektedir. Kronik hatalar, yanlış yazım, izin sorunları veya ortam değişkenlerinin ayarlanmamış olması nedeniyle oluşabilir. Scriptin doğru çalışıp çalışmadığını terminalde direkt çalıştırarak kontrol etmek, sorunun kaynağını belirlemede yardımcı olabilir.
Ek Özellikler
Cron’un sunduğu ek özellikler arasında, çıktıların bir dosyaya yönlendirilmesi veya e-posta ile bildirilmesi yer alır. Her zaman bir komutun çıktısını bir dosyaya yönlendirmek istenirse, cron tanımının sonuna `>> /path/to/logfile.log 2>&1` eklenebilir. Bu, hem standart hem de hata çıktılarını belirtilen dosyaya yönlendirir.
Güvenlik
Cron işleri eklenirken, sistem güvenliği ihmal edilmemelidir. Önemli scriptlerde kullanıcı izinleri ve script içeriği kontrol edilmelidir. Ayrıca, yönettiği dosyalara erişim izinleri en minimum düzeyde tutulmalıdır.
Bu süreç, birçok sistem yöneticisi ve kullanıcı için düzenli işlerin otomasyonu ve sistem iş yükünün azaltılması açısından kritik öneme sahiptir. /etc/cron.d dizinine eklenen yeni dosyalar, sistemin işleyişinde önemli bir rol oynar.