Linux’ta Zamanlayıcı (Cron Job) Nasıl Oluşturulur?
Linux’ta Zamanlayıcı (Cron Job) Nasıl Oluşturulur?
Cron Job, Linux sistemlerinde belirli aralıklarla otomatik olarak komut veya script çalıştırmaya yarayan zamanlayıcı sistemidir. Sistem yöneticileri ve geliştiriciler tarafından yedekleme, log temizleme, güncelleme veya otomatik görevler için sıkça kullanılır. Bu yazıda, Linux’ta cron job oluşturma, düzenleme ve izleme adımlarını detaylı olarak ele alıyoruz.
- Cron Nedir?
- Cron Job Nerelerde Kullanılır?
- 1. Cron Servisinin Durumunu Kontrol Etme
- 2. Crontab Dosyasını Açma
- 3. Cron Job Söz Dizimi (Syntax)
- 4. Cron Job Örnekleri
- Her 5 Dakikada Bir Komut Çalıştırmak
- Her Gün Saat 02:00’de Yedekleme Scripti Çalıştırmak
- Her Pazar Saat 23:30’da Sistem Güncellemesi
- Her Ayın 1’inde Log Temizliği
- 5. Mevcut Cron Job’ları Listeleme
- 6. Cron Job Silme
- 7. Cron Loglarını Görüntüleme
- 8. Cron Job’larda Ortam Değişkenleri
- 9. Cron Dosya İzinleri
- 10. Sistem Seviyesinde Cron Görevleri
- 11. Özel Zamanlayıcılar (systemd timer)
- 12. Güvenli ve Optimize Cron Kullanımı
- Sonuç
Cron Nedir?
Cron, “chronos” (zaman) kelimesinden gelir ve Linux’ta zaman tabanlı görev çalıştırıcısıdır. Sistem arka planında sürekli çalışan crond servisi, crontab dosyalarında tanımlı görevleri belirtilen zamanda otomatik olarak yürütür.
Cron Job Nerelerde Kullanılır?
- Veritabanı ve dosya yedekleme görevleri
- Log dosyalarını arşivleme veya silme
- Günlük rapor e-postası gönderme
- Web servislerini düzenli kontrol etme (ping veya curl komutlarıyla)
- Otomatik güncelleme ve bakım scriptleri
1. Cron Servisinin Durumunu Kontrol Etme
Cron servisi arka planda sürekli çalışır. Aşağıdaki komutla durumunu kontrol edebilirsiniz:
sudo systemctl status cron # Debian/Ubuntu
sudo systemctl status crond # CentOS/AlmaLinux
Eğer çalışmıyorsa:
sudo systemctl start cron
sudo systemctl enable cron
2. Crontab Dosyasını Açma
Her kullanıcı kendi cron görevlerine sahiptir. Kullanıcı bazında görev eklemek için:
crontab -e
İlk kez çalıştırıyorsanız, hangi metin düzenleyiciyi (nano, vim, vs.) kullanmak istediğinizi sorar.
3. Cron Job Söz Dizimi (Syntax)
Bir cron görevi 6 sütundan oluşur:
┌───────────── Dakika (0 - 59)
│ ┌──────────── Saat (0 - 23)
│ │ ┌────────── Gün (1 - 31)
│ │ │ ┌──────── Ay (1 - 12)
│ │ │ │ ┌────── Haftanın günü (0 - 7)
│ │ │ │ │
│ │ │ │ │
* * * * * komut
4. Cron Job Örnekleri
Her 5 Dakikada Bir Komut Çalıştırmak
*/5 * * * * /usr/bin/php /var/www/site/artisan schedule:run >> /dev/null 2>&1
Her Gün Saat 02:00’de Yedekleme Scripti Çalıştırmak
0 2 * * * /home/user/backup.sh
Her Pazar Saat 23:30’da Sistem Güncellemesi
30 23 * * 0 sudo apt update && sudo apt upgrade -y
Her Ayın 1’inde Log Temizliği
0 0 1 * * rm -f /var/log/*.log
5. Mevcut Cron Job’ları Listeleme
Kullanıcının mevcut cron görevlerini görüntülemek için:
crontab -l
6. Cron Job Silme
Tüm cron görevlerini temizlemek için:
crontab -r
Yalnızca birini silmek istiyorsanız, crontab -e komutuyla düzenleyip ilgili satırı kaldırabilirsiniz.
7. Cron Loglarını Görüntüleme
Cron’un başarılı şekilde çalışıp çalışmadığını görmek için log dosyasını kontrol edin:
sudo tail -f /var/log/syslog | grep CRON # Debian/Ubuntu
sudo tail -f /var/log/cron # CentOS/AlmaLinux
8. Cron Job’larda Ortam Değişkenleri
Cron job’lar normal shell ortamından bağımsızdır. Bu nedenle PATH gibi değişkenleri başta tanımlamanız gerekebilir:
PATH=/usr/local/bin:/usr/bin:/bin
SHELL=/bin/bash
9. Cron Dosya İzinleri
Root veya sistem kullanıcıları için cron erişimi /etc/cron.allow ve /etc/cron.deny dosyalarıyla kontrol edilir. Güvenlik için yalnızca gerekli kullanıcıları izin listesine ekleyin.
10. Sistem Seviyesinde Cron Görevleri
/etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly dizinlerine script koyarak sistem genelinde otomatik görevler oluşturabilirsiniz.
11. Özel Zamanlayıcılar (systemd timer)
Yeni Linux sürümlerinde systemd timers, cron’a alternatif olarak kullanılabilir. Örneğin:
systemctl list-timers
ile zamanlanmış systemd görevlerini görüntüleyebilirsiniz.
12. Güvenli ve Optimize Cron Kullanımı
- Gereksiz cron görevlerini kaldırın.
- Komutlara tam yol (absolute path) kullanın.
- Log yönlendirmesi yapın (
> /var/log/cron.log 2>&1). - Yedekleme görevleri için VDS Sunucu tercih edin.
Sonuç
Cron job, Linux sistemlerinde otomasyonun temel taşıdır. Basit bir yapılandırmayla zaman tabanlı tüm işlemleri güvenle yürütebilirsiniz. Kritik görevlerde performans ve erişim sürekliliği için HostLigo Kurumsal Hosting veya Premium VDS çözümleri önerilir.