Linux’ta Zamanlayıcı (Cron Job) Nasıl Oluşturulur?

Linux’ta Zamanlayıcı (Cron Job) Nasıl Oluşturulur?
Yazı Özetini Göster

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, “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.

Bir Yorum Yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Benzer Yazılar