X
Lütfen Ülke (Bölge) Seçiniz
Türkiye (Türkçe)Türkiye (Türkçe) Worldwide (English)Worldwide (English)
X
X
Lütfen Ülke (Bölge) Seçiniz
Türkiye (Türkçe)Türkiye (Türkçe) Worldwide (English)Worldwide (English)
X

Bilgi Bankası

AnasayfaBilgi BankasıSunucu YönetimiLinux'ta Cron Job Nedir? Zamanlanmı...

Linux'ta Cron Job Nedir? Zamanlanmış Görevleri Sunucuda Nasıl Kurarsınız?

Kısaca: Cron job nedir? Linux'ta cron daemon'ının, crontab dosyasındaki zaman ifadelerine göre komut çalıştırmasıdır. Beş alan (minute, hour, day of month, month, day of week) ile örneğin 0 2 * * * satırı her gün 02:00'de bir komutu tetikler. Bu rehber işletim sistemi düzeyinde, crontab(5) man sayfasına uygun standart alanları anlatır; panel menü adları dağıtıma göre değişebileceği için CWP'ye özgü yollar uydurulmamıştır.

1. Cron ve crontab Ne İşe Yarar?

Cron, sunucuda yinelenen işleri (yedek, log temizliği, sertifika yenileme betiği, site bakım komutu) insan müdahalesi olmadan çalıştırır. Her kullanıcının kendi crontab'ı olabilir; komutlar o kullanıcının kimliğiyle çalışır. Sistem geneli işler için /etc/crontab ve /etc/cron.d/ kullanılır — bu dosyalarda zaman alanlarından sonra bir kullanıcı adı alanı da gerekir.

Sunucuya bağlanmak için SSH kullanıyorsanız önce SSH nedir, nasıl bağlanılır rehberimize bakın. Diğer sunucu yönetimi yazıları Sunucu Yönetimi kategorisindedir.

crontab alan şeması: minute, hour, dom, month, dow ve örnek satır 0 2 * * * /path/backup.sh

2. Crontab Alanları (Doğrulanmış Standart)

Kullanıcı crontab satırı şu sıradadır: minute hour day-of-month month day-of-week command. crontab(5) man sayfasına göre izin verilen değerler:

Alanİzin verilen değerler
minute0–59
hour0–23
day of month1–31
month1–12 (veya kısa İngilizce adlar: jan, feb, …)
day of week0–7 (0 veya 7 = Pazar; veya mon, tue, …)
  • * alanı “tüm değerler” anlamına gelir.
  • Aralık: 8-11 (saat 8, 9, 10, 11).
  • Liste: 1,15 veya mon,wed,fri.
  • Adım: */15 (o alanda her 15 birimde bir) veya 0-23/2.

Not: Hem day-of-month hem day-of-week kısıtlanırsa (ikisi de * değilse) komut, iki alandan biri eşleştiğinde çalışır. Örnek: 30 4 1,15 * 5 → her ayın 1'i ve 15'i saat 04:30 veya her Cuma 04:30.

3. Kullanıcı Crontab'ını Düzenleme

crontab(1) komutu kullanıcı tablolarını yönetir; dosyaları /var/spool/cron/ (veya dağıtıma göre /var/spool/cron/crontabs/) altında saklar ama doğrudan elle düzenlemek yerine şu komutlar kullanılır:

  • crontab -e — düzenleyiciyi açar (VISUAL veya EDITOR); kaydedip çıkınca tablo kurulur.
  • crontab -l — mevcut tabloyu listeler.
  • crontab -r — tabloyu siler (dikkatli kullanın; bazı sürümlerde -i onay ister).
  • crontab -u kullanici -e — root iken başka kullanıcının tablosunu düzenler.

Örnek satırlar:

# Her gün 02:00'de yedek betiği
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

# Hafta içi her saat başı
0 * * * 1-5 /usr/local/bin/hourly-check.sh

# Her Pazar 05:05
5 4 * * sun /usr/local/bin/weekly.sh

Bazı cron uygulamaları @daily, @hourly, @reboot gibi takma adları da destekler (@daily ≈ 0 0 * * *). Desteklenip desteklenmediği dağıtımınızdaki crontab(5) sayfasında yazar.

4. Sistem Crontab ve /etc/cron.d/

Sistem işlerinde satır biçimi şöyledir: minute hour dom month dow user command. Yani zaman alanlarından sonra komuttan önce kullanıcı adı gelir. Dosyalar:

  • /etc/crontab — ana sistem crontab dosyası
  • /etc/cron.d/ — paketlerin veya yöneticinin eklediği sistem işleri

Kullanıcı crontab'ında kullanıcı adı alanı yoktur; sistem dosyalarında vardır. Karıştırmayın.

5. Ortam, PATH ve Çıktı

Cron, etkileşimli kabuk profilinizi yüklemez. Man sayfasına göre varsayılan olarak SHELL=/bin/sh atanır; HOME ve LOGNAME /etc/passwd'den gelir. Betiğiniz /usr/local/bin altındaysa crontab'ın üstüne açık PATH=... yazın veya komutta tam yol kullanın. Çıktı (stdout/stderr) genelde crontab sahibine posta ile gider; MAILTO=adres veya MAILTO="" (posta yok) ile kontrol edebilirsiniz. Log için komutu dosyaya yönlendirmek pratiktir: ... >> /var/log/job.log 2>&1.

6. Güvenli Kullanım İpuçları

  • Önce komutu SSH oturumunda elle çalıştırıp çıkış kodunu doğrulayın.
  • Yazma izni olan dizinlere log alın; kök dizine rastgele dosya yazmayın.
  • cron.allow / cron.deny dosyaları hangi kullanıcıların crontab kullanabileceğini kısıtlar (işlerin çalışmasını değil, tablo düzenlemeyi).
  • Gizli anahtar veya parola crontab satırına gömmeyin; ortam dosyası veya yetkili gizli deposu kullanın.

VPS veya sunucu planınızda cron erişimi ve zamanlanmış görevler için yardıma ihtiyaç duyarsanız destek ekibimizle iletişime geçin.

Sıkça Sorulan Sorular

Cron job nedir, kısaca?

Linux'ta cron servisinin, crontab'daki zaman ifadesine göre periyodik olarak bir komut çalıştırmasıdır. Örnek: 0 2 * * * her gün 02:00'de çalışır.

crontab -e ile /etc/crontab farkı nedir?

crontab -e sizin kullanıcı tablonuzdur ve satırda kullanıcı adı yoktur. /etc/crontab sistem dosyasıdır; zaman alanlarından sonra kullanıcı adı gelir.

İş çalışmıyor; nereye bakayım?

Önce crontab -l ile satırın kayıtlı olduğunu görün, komutu elle çalıştırın, PATH/tam yol kullanın ve /var/log/syslog veya journalctl üzerinden cron kayıtlarına bakın.

* * * * * ne demektir?

Her dakika çalışır. Yoğun komutlarda sunucu yükünü gereksiz artırır; gerçekten gerekmedikçe kullanmayın.

Aradığınız Bilgiyi Bulamıyor musunuz?

Bilgi bankasını detaylı olarak incelediniz, fakat ihtiyacınız olan bilgiyi bulamıyorsanız,

Bir Destek Talebi Oluşturun.
Faydalı Buldunuz mu?
(2 defa görüntülendi. / 0 kişi faydalı buldu.)

Powered by WISECP
Top