Cron, Unix benzeri işletim sistemlerinde zaman tabanlı bir iş zamanlama hizmetidir. Kullanıcılar işleri (komutlar veya komut dosyaları) belirli zamanlarda, tarihlerde veya aralıklarla çalışacak şekilde zamanlayabilirler. Bu özellik özellikle sistem bakım görevlerini otomatikleştirmek, komut dosyalarını çalıştırmak ve hatta belirli aralıklarla e-posta göndermek için kullanışlıdır.
Bir Cron İşinin Anatomisi
Bir Cron işinin yapısını anlamak çok önemlidir. Bir Cron işi, crontab (Cron tablosu) dosyasında belirli aralıklarla çalışması planlanan bir komutu temsil eden tek bir satırdır. Bir crontab girdisinin altı alanı vardır:
- Dakika (0 - 59)
- Saatler (0 - 23)
- Ayın günü (1 - 31)
- Ay (1 - 12)
- Haftanın günü (0 - 7, burada hem 0 hem de 7 Pazar gününü temsil eder)
- Yürütülecek komut
Bir Cron İşi Ayarlama
Bir Cron işi zamanlamak için crontab dosyasını düzenlemeniz gerekir. Bunu şu komutu kullanarak yapabilirsiniz crontab -e
komutunu kullanarak crontab dosyasını bir metin düzenleyicide açabilirsiniz. İşte hızlı bir yol gösterici:
- Crontab'ın açılması: Çalıştır
crontab -e
komutunu kullanabilirsiniz. Bu, crontab dosyasını varsayılan düzenleyicinizde açar. - Cron İşi Ekleme: Yeni bir satırda, zamanlama parametrelerini (dakika, saat vb.) ve ardından komutu belirtin.
- Kaydetme ve Çıkma: Değişiklikleri kaydedin ve düzenleyiciden çıkın.
Yaygın Cron İş Örnekleri
Cron'un çok yönlülüğü, çok çeşitli kullanım durumları aracılığıyla gösterilebilir. İşte birkaç örnek:
- Bir dizini günlük olarak yedekleyin: Belirli bir dizini günlük olarak yedeklemek için bir Cron işi zamanlayabilirsiniz. Dizinin /home/kullanıcıadı/belgeler olduğunu ve yedeklemenin her gün saat 2'de yapılmasını istediğinizi varsayalım.
0 2 * * * tar -zcf /var/backups/home.tgz /home/username/documents
- Her dakika bir komut dosyası çalıştırılıyor: Bir betiğiniz varsa (örneğin, /home/kullanıcıadı/script.sh adresinde bulunan script.sh), bunu her dakika çalışacak şekilde zamanlayabilirsiniz.
* * * * * /home/username/script.sh
- Her pazartesi bir e-posta gönderiyorum: Diyelim ki bir mail.txt dosyanız var ve içeriğini her Pazartesi saat 17:00'de e-postayla göndermek istiyorsunuz. mail komutunu Cron ile birlikte kullanabilirsiniz.
0 17 * * MON cat /home/username/mail.txt | mail -s "Weekly Update" [email protected]
Gelişmiş Cron İpuçları ve Püf Noktaları
Cron güçlü ve esnek olsa da, kullanımını optimize etmenize yardımcı olabilecek birkaç ipucu ve püf noktası vardır:
- PATH ayarı: Görevleri zamanlarken, mutlak yolları belirtmeden tüm komutların bulunmasını sağlamak için crontab dosyasının en üstünde PATH ortam değişkenini ayarlayabilirsiniz.
- Çıkış Yönlendirme: Varsayılan olarak, Cron cronjob'u çalıştıran kullanıcı hesabına bir e-posta gönderir. Bu gerekli değilse, çıktıyı /dev/null adresine yönlendirebilirsiniz.
- Cron İşlerini Günlüğe Kaydetme: Bir cron işini takip etmek için, bunun yerine çıktıyı bir günlük dosyasına yönlendirebilirsiniz.
Cron'un Sınırlamaları ve Alternatifleri
Avantajlarına rağmen, Cron sınırlamalardan yoksun değildir. Daha gelişmiş görev zamanlayıcılarında bulunan iş bağımlılıkları, iş zincirleme ve ayrıntılı raporlama gibi özelliklerden yoksundur.
Cron'un birkaç güçlü alternatifi bulunmaktadır:
- Anacron: Sürekli çalışmayan sistemler için idealdir.
- Fcron: Hem Cron hem de Anacron'un işlevselliğini gelişmiş özelliklerle birleştirir.
- Systemd Zamanlayıcıları: Systemd tabanlı Linux dağıtımlarında Cron için modern bir yedek.
Daha Fazla Öğrenme
- Ubuntu Belgelerinde Cron kılavuzu
- TecMint'te Cron Eğitimi
- DigitalOcean Tutorials'da Cron'a Genel Bakış
- Crontab man sayfası
Cron'un gücüyle, aksi takdirde manuel olarak çalıştıracağınız neredeyse tüm görevleri otomatikleştirebilirsiniz. Basit yapısı ve esnek zamanlama seçenekleri, onu Unix benzeri sistem yöneticilerinin araç setinde temel bir unsur haline getirir.