Rehber: Cron Job (Zamanlanmış Görev) Nedir ve Nasıl Kurulur?

Web projelerinde otomatik e-posta gönderimleri, veritabanı yedeklemeleri, önbellek temizliği veya periyodik veri senkronizasyonu gibi işlemlerin belirli zaman aralıklarıyla arka planda çalışması gerekir. Bu tür tekrarlayan görevleri otomatikleştirmek için Linux sistemlerde Cron Job (Zamanlanmış Görev) yapısı kullanılır.

Bu rehberde, Linux VDS ve cPanel sunucularınızda Cron Job mantığını, crontab kullanımını ve zamanlama parametrelerini tüm detaylarıyla inceliyoruz.

1. Cron Job ve Crontab Nedir?

  • Cron: Linux/UNIX işletim sistemlerinde arka planda çalışan ve belirlenen komutları belirli zaman periyotlarında otomatik olarak tetikleyen zamanlama servisidir (daemon).

  • Crontab (Cron Table): Hangi görevin, ne zaman ve hangi sıklıkla çalışacağını belirten komutların tutulduğu yapılandırma dosyasıdır.

Crontab Erişim Yetkileri ve Sınırlamalar

Sunucu üzerinde kullanıcıların Cron Job oluşturabilmesi belirli erişim dosyalarıyla kontrol edilebilir:

  • /etc/cron.allow dosyası mevcutsa, yalnızca bu dosyada kullanıcı adı yazılı olan kişiler crontab oluşturabilir.

  • /etc/cron.deny dosyası mevcutsa ve içerisinde kullanıcı adınız yer alıyorsa Cron Job kullanamazsınız.

  • Dosya bulunmaması durumunda varsayılan olarak tüm kullanıcılar yetkili olabilir veya yalnızca root kullanıcısı işlem yapabilir.

2. Temel Crontab Komutları

SSH (Terminal) bağlantısı üzerinden crontab dosyanızı yönetmek için aşağıdaki temel komutları kullanabilirsiniz:

KomutAçıklama
crontab -eMevcut kullanıcının crontab dosyasını düzenler (yoksa oluşturur).
crontab -lTanımlanmış olan tüm Cron Job görevlerini listeler.
crontab -rMevcut kullanıcının tüm crontab dosyasını siler.
crontab -vCrontab dosyasının en son ne zaman düzenlendiğini gösterir (bazı sistemlerde desteklenir).

3. Crontab Sözdizimi (Syntax) ve Zamanlama Yapısı

Crontab dosyasındaki her bir satır 5 adet zaman parametresi ve ardından çalıştırılacak komuttan oluşur:


* * * * * /calistirilacak/komutun/yolu
│ │ │ │ │
│ │ │ │ └───── Haftanın Günü (0 - 6) (Pazar = 0 veya 7)
│ │ │ └──────── Ay (1 - 12)
│ │ └────────── Ayın Günü (1 - 31)
│ └──────────── Saat (0 - 23)
└────────────── Dakika (0 - 59)

Zamanlama Karakterlerinin Anlamları

  • * (Joker/Wildcard): İlgili alanın kapsadığı tüm değerleri ifade eder (örn. saat kısmında * her saat demektir).

  • , (Virgül): Birden fazla spesifik zaman değeri belirtmek için kullanılır (örn. 1,15,30).

  • - (Tire): Bir değer aralığı tanımlar (örn. 1-5 hafta içi günleri temsil eder).

  • */n (Bölü): Belirtilen n sıklığında tekrarlanmayı sağlar (örn. */15 her 15 dakikada bir).

4. Örnek Crontab Kullanımları

Pek çok senaryoda ihtiyaç duyabileceğiniz pratik zamanlama örnekleri aşağıdadır:


# Her gün gece yarısı (00:00) geçici dosyaları temizler
0 0 * * * rm -rf /home/kullanici/tmp/*

# Her 15 dakikada bir PHP betiğini çalıştırır
*/15 * * * * /usr/bin/php /home/kullanici/public_html/cron.php

# Her ayın 1, 10 ve 20. günlerinde saat 03:30'da çalışır
30 3 1,10,20 * * /home/kullanici/scripts/backup.sh

# Hafta içi her gün (Pazartesi-Cuma) akşam 20:00'de tetiklenir
0 20 * * 1-5 /usr/bin/php /home/kullanici/public_html/daily-report.php

5. Çıktı Yönetimi: E-posta İptali ve Log Tutma

Cron servisleri varsayılan olarak çalıştırılan her görev sonrası sistem kullanıcısına yerel e-posta/bildirim gönderir. Bu durumun önüne geçmek veya çıktıları bir log dosyasına kaydetmek için şu yöntemler kullanılır:

Bildirim E-postalarını Kapatmak

Komutun sonuna >/dev/null 2>&1 ifadesini ekleyerek tüm standart çıktı ve hata mesajlarını sessize alabilirsiniz:


0 2 * * * /usr/bin/php /home/kullanici/public_html/task.php >/dev/null 2>&1

Çıktıları Log Dosyasına Yazdırmak

Görevin çalışma geçmişini ve olası hataları takip etmek için çıktıyı bir log dosyasına yönlendirebilirsiniz:


0 2 * * * /usr/bin/php /home/kullanici/public_html/task.php > /home/kullanici/logs/cron_output.log 2>&1

6. cPanel Üzerinden Cron Job Ekleme (DoğruHost Kontrol Paneli)

Komut satırı kullanmak istemiyorsanız, DoğruHost cPanel arayüzü üzerinden görsel olarak kolayca Cron Job oluşturabilirsiniz:

  1. cPanel'e Giriş Yapın: cPanel hesabınıza giriş yaptıktan sonra Gelişmiş (Advanced) başlığı altındaki Cron İşleri (Cron Jobs) simgesine tıklayın.

  2. E-posta Ayarı: Görev çalıştığında bildirim almak istiyorsanız üst kısımdaki e-posta adresini güncelleyin (istemiyorsanız boş bırakabilir veya yukarıdaki >/dev/null yöntemini kullanabilirsiniz).

  3. Zamanlama Seçimi:

    • Ortak Ayarlar (Common Settings): Açılır menüden "Her 5 dakikada bir", "Günde bir kez" gibi hazır şablonlardan birini seçebilirsiniz.

    • Özel Zamanlama: Dakika, saat, gün, ay ve hafta günü alanlarını manuel olarak doldurabilirsiniz.

  4. Komut Satırı (Command): Çalıştırılacak komutu yazın.

    • Doğrudan PHP çalıştırmak için: /usr/bin/php /home/kullaniciadi/public_html/cron.php

    • URL üzerinden tetiklemek için: wget -q -O - [http://siteadi.com/cron.php](http://siteadi.com/cron.php) >/dev/null 2>&1

  5. Yeni Cron İşi Ekle (Add New Cron Job) butonuna basarak işleminizi tamamlayın.

DoğruHost Sunucu Performansı İpucu: Sunucu kaynaklarınızı (CPU/RAM) verimli kullanmak adına yüksek işlem gerektiren cron görevlerini (örneğin tam site yedeği veya toplu e-posta gönderimi) ziyaretçi trafiğinin en düşük olduğu gece saatlerine (02:00 - 05:00 arası) zamanlamanız önerilir.

Projenizi Bir Sonraki Seviyeye Taşıyın

Web sitenizi güvenilir, hızlı ve modern bir altyapı üzerinde hayata geçirmek için doğru zamanı seçin. Doğru Host, ihtiyaçlarınıza uygun güçlü hosting çözümleriyle her adımda yanınızda.