Cron Job Nedir, Zamanlanmış Görevler Nasıl Çalışır?

Yazar: Ahmet YılmazYayın: 26 Ağu 2026Güncelleme: 11 Eyl 202612 dk Okuma

Cron job, Unix tabanlı sistemlerde komut dosyalarını ve işlemleri belirli zamanlarda otomatik olarak çalıştırmayı sağlayan temel bir zamanlama aracıdır.

Cron Job Nedir, Zamanlanmış Görevler Nasıl Çalışır? için öne çıkan görsel
Cron Job Nedir, Zamanlanmış Görevler Nasıl Çalışır? için öne çıkan görsel

Cron job, Unix tabanlı işletim sistemlerinde betiklerin, komutların ve sistem rutinlerinin önceden tanımlanmış zaman aralıklarında insan müdahalesine gerek kalmadan arka planda otomatik olarak yürütülmesini sağlayan zamanlama mekanizmasıdır.

Modern BT altyapılarında veri tutarlılığı, yedekleme disiplini ve asenkron operasyonların sürdürülebilirliği, zamanlanmış görevlerin kararlılığına doğrudan bağlıdır. Yazılım mimarileri ölçeklendikçe veritabanı temizliği, toplu faturalandırma, e-posta gönderimi ve üçüncü taraf API senkronizasyonları gibi rutin operasyonların kusursuz işletilmesi gerekir. Bu rehberde Cron Job Nedir, Zamanlanmış Görevler Nasıl Çalışır? sorusunun teknik arka planını, Crontab sözdizimi mimarisini, kurumsal sistemlerdeki kritik kullanım pratiklerini, sunucu kaynak optimizasyonunu ve hata yönetim stratejilerini en ince ayrıntısına kadar bulabilirsiniz.

Cron Job (Zamanlanmış Görev) Mimarisi ve Temel Kavramlar

Unix ve Linux mimarilerinde zamanlama otomasyonu, işletim sisteminin çekirdek yeteneklerinden biridir. Zamanlanmış görevler; belirli bir betiğin, derlenmiş bir ikili (binary) dosyanın veya kabuk komutunun önceden belirlenen dakika, saat, gün ya da ay dilimlerinde tetiklenmesi prensibiyle çalışır. Sürecin temel amacı, insan operatörlerin manuel olarak takip etmesi gereken periyodik işleri sistem katmanında standardize ederek insan hatası riskini sıfıra indirmektir.

Sistem yöneticileri ve yazılım mühendisleri açısından cron yapısı, mikroservis veya monolitik mimarilerdeki kuyrukların tetiklenmesinden dosya arşivlemeye kadar geniş bir spektrumda omurga görevi görür. Cron mekanizmasının doğru kurgulanması; veritabanı kilitlenmelerini, sunucu belleğinde oluşabilecek sızıntıları ve yetkilendirme kaynaklı kesintileri önlemenin temel şartıdır.

Unix ve Linux Sistemlerinde Cron Arka Plan Hizmeti (Daemon)

Cron mimarisinin kalbinde, işletim sistemi önyüklendiği (boot edildiği) andan itibaren arka planda sürekli çalışan cron (veya bazı dağıtımlarda crond) adlı bir sistem arka plan hizmeti (daemon) yer alır. Bu daemon, sistem çalıştığı sürece bellekte aktif kalır ve her dakikanın başlangıcında sistem saatini kontrol eder.

crond hizmeti uyku (sleep) ve uyanma (wake) döngüsüyle işletilir:

  • Her 60 saniyede bir tetiklenen daemon, tanımlanmış görev tablolarını satır satır tarar.

  • Geçerli dakikaya, saate, ayın gününe, aya ve haftanın gününe eşleşen bir kural olup olmadığını analiz eder.

  • Eşleşen bir zaman damgası bulduğunda, ilgili komutu yapılandırılan kullanıcı yetkileriyle yeni bir alt işlem (child process / subshell) olarak başlatır.

  • Komutun ürettiği standart çıktıları (stdout) veya standart hataları (stderr) yakalayarak ilgili sistem loglarına veya posta kutusuna iletir.

Sistem düzeyinde çalışan bu daemon; Ubuntu/Debian sistemlerde cron, RHEL/CentOS/AlmaLinux sistemlerde ise crond komutu ile denetlenir. Hizmetin durması veya çökmesi, tanımlı hiçbir periyodik görevin çalışmaması anlamına geldiği için yüksek erişilebilirlik gerektiren ortamlarda izleme (monitoring) ajanları tarafından sürekli gözetim altında tutulmalıdır.

Crontab (Cron Table) Dosyası ve İşlevi

Crontab (Cron Table), crond daemon'unun okuduğu yapılandırma metin dosyasıdır. Bu dosya, hangi komutun ne zaman ve hangi ortam değişkenleriyle çalıştırılacağını belirten satırlardan oluşur. İşletim sisteminde iki farklı crontab katmanı bulunur:

  1. Kullanıcı Düzeyindeki Crontab Dosyaları: Her sistem kullanıcısının kendine özel bir crontab dosyası bulunabilir. Bu dosyalar doğrudan /var/spool/cron/crontabs (veya dağıtıma göre /var/spool/cron) dizininde tutulur. Kullanıcılar bu dosyaları doğrudan metin editörüyle değil, crontab -e komutu aracılığıyla düzenler.

  2. Sistem Düzeyindeki Crontab Dosyaları: Doğrudan /etc/crontab dosyasında ve /etc/cron.d, /etc/cron.daily, /etc/cron.hourly gibi sistem dizinlerinde barındırılır. Sistem düzeyindeki dosyalarda komutun hangi kullanıcı adına (root, www-data, nginx vb.) çalıştırılacağını belirten ek bir kullanıcı sütunu bulunur.

# Sistem düzeyindeki /etc/crontab yapısı:
# m h dom mon dow user  command
0 3 * * * root /usr/local/bin/backup-database.sh

Crontab dosyasına yazılan her kural tek bir satırda yer almalıdır. Satır başlarında kullanılan # işareti, satırın açıklama (comment) olduğunu belirtir ve daemon tarafından yok sayılır.

Kurumsal Sistemlerde Cron Job Kullanım Alanları

Kurumsal yazılım ekosistemlerinde kullanıcı deneyimini doğrudan etkileyen HTTP istek-yanıt döngüsü (request-response cycle) ile arka planda yapılması gereken ağır hesaplamalı işler birbirinden kesin sınırlarla ayrılır. Bir web uygulamasına gelen kullanıcı isteği sırasında büyük bir dosya oluşturmak veya harici servislere binlerce istek atmak, istemci tarafında zaman aşımı (timeout) hatalarına yol açar. Bu nedenle periyodik ve yoğun kaynak gerektiren işler zamanlanmış görevlere devredilir.

Otomatik Veritabanı ve Dosya Yedekleme Süreçleri

İş sürekliliği ve felaket kurtarma (disaster recovery) planlarının en kritik ayağı düzenli yedeklemedir. Manuel yedekleme süreçleri insan faktörüne dayalı gecikmeler ve unutkanlıklar nedeniyle kabul edilemez riskler barındırır. Cron job kullanımıyla:

  • PostgreSQL için pg_dump, MySQL/MariaDB için mysqldump komutları gecenin en düşük trafikli saatlerinde (örneğin 03:00) otomatik tetiklenir.

  • Üretilen SQL dökümleri gzip veya bzip2 ile sıkıştırılır.

  • Oluşturulan arşiv dosyaları AWS S3, Google Cloud Storage veya harici bir SFTP sunucusuna aktarılır.

  • 30 günden eski yedeklerin tespiti ve diskten temizlenmesi (retention policy) yine bir cron betiği ile yönetilir.

Toplu E-posta Gönderimleri ve Pazarlama Otomasyonları

E-ticaret ve SaaS platformlarında fatura bildirimleri, bülten gönderimleri, terk edilmiş sepet hatırlatmaları ve haftalık özet raporları gibi toplu işlemler anlık olarak tetiklenmez. Yüz binlerce e-postanın SMTP veya harici API'ler (SendGrid, Amazon SES, Postmark) üzerinden tek seferde gönderilmesi API rate limit sınırlarına takılmaya ve sunucu kaynaklarının tükenmesine neden olur.

Cron job'lar; her 5 veya 10 dakikada bir veritabanındaki e-posta kuyruk tablosunu (email_queue) kontrol eder, gönderilmemiş 500 kaydı çeker, gönderimini sağlar ve durumlarını günceller. Bu işlem hem sunucu yükünü dengeler hem de olası ağ kesintilerinde kuyruğun kaldığı yerden devam etmesine imkan tanır.

Sistem Bakım, Ön Bellek Temizleme ve Log Yönetimi

Sürekli çalışan üretim sunucularında disk alanının tükenmesi, sistem kesintilerinin en yaygın nedenlerinden biridir. Cron job ile optimize edilen bakım süreçleri:

  • /var/log altındaki devasa log dosyalarının logrotate aracılığıyla döndürülmesi, sıkıştırılması veya belirlenen süre sonunda silinmesi,

  • Redis veya Memcached önbelleklerinin (cache) periyodik olarak ısıtılması (cache warming) ya da geçersiz kılan anahtarların temizlenmesi,

  • E-ticaret platformlarındaki oturum (session) tablolarının ve süresi dolmuş sepet verilerinin tasfiye edilmesi,

  • SSL/TLS sertifikalarının (örneğin Let's Encrypt / Certbot) yenilenme tarihlerinin kontrol edilmesi ve gerektiğinde otomatik yenilenmesi gibi hayati operasyonları kapsar.

Operasyon Türüİdeal Çalışma ZamanıÖnerilen Komut / AraçTemel Amaç
Veritabanı YedeğiHer gece 02:30pg_dump / mysqldumpVeri kaybını önleme ve arşivleme
Log DöndürmeGünlük / Haftalık/usr/sbin/logrotateDisk taşmasını engelleme
Kuyruk İşlemeHer 1-5 dakikaphp artisan queue:workAsenkron iş akışlarını yürütme
SSL Sertifika KontrolüGünde 2 kezcertbot renew --quietKesintisiz HTTPS erişimi sağlama
Geçici Dosya TemizliğiPazar 04:00find /tmp -mtime +7 -deleteDepolama optimizasyonu

Veritabanı Yedeği

İdeal Çalışma Zamanı

Her gece 02:30

Önerilen Komut / Araç

pg_dump / mysqldump

Temel Amaç

Veri kaybını önleme ve arşivleme

Log Döndürme

İdeal Çalışma Zamanı

Günlük / Haftalık

Önerilen Komut / Araç

/usr/sbin/logrotate

Temel Amaç

Disk taşmasını engelleme

Kuyruk İşleme

İdeal Çalışma Zamanı

Her 1-5 dakika

Önerilen Komut / Araç

php artisan queue:work

Temel Amaç

Asenkron iş akışlarını yürütme

SSL Sertifika Kontrolü

İdeal Çalışma Zamanı

Günde 2 kez

Önerilen Komut / Araç

certbot renew --quiet

Temel Amaç

Kesintisiz HTTPS erişimi sağlama

Geçici Dosya Temizliği

İdeal Çalışma Zamanı

Pazar 04:00

Önerilen Komut / Araç

find /tmp -mtime +7 -delete

Temel Amaç

Depolama optimizasyonu

Cron Job Sözdizimi (Syntax) ve Çalışma Mantığı

Cron ifadelerinin hatasız yazılabilmesi, beş standart alanın hiyerarşisini ve bu alanlarda kullanılan özel karakterlerin matematiksel mantığını kavramayı gerektirir. Standart bir Crontab satırı, boşluklarla ayrılmış 5 zamanlama parametresi ve ardından çalıştırılacak kabuk komutundan meydana gelir.

* * * * * /calistirilacak/komutun/mutlak/yolu.sh
│ │ │ │ │
│ │ │ │ └─── 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)

Beş Zamanlama Parametresi (Dakika, Saat, Gün, Ay, Haftanın Günü)

Bu beş alanın her biri belirli bir sayısal aralığı temsil eder:

  1. Dakika (Minute - 0 - 59): Görevin saatin hangi dakikasında başlayacağını belirler. 15 değeri verilirse her saatin 15. dakikasında tetiklenir.

  2. Saat (Hour - 0 - 23): 24 saatlik formatta günün hangi saatinde çalışacağını ifade eder. 0 gece yarısını (00:00), 14 ise öğleden sonra 14:00'ı temsil eder.

  3. Ayın Günü (Day of Month - 1 - 31): İlgili ayın hangi takvim gününde çalışacağını belirler.

  4. Ay (Month - 1 - 12 veya İsim Kısaltmaları): Yılın hangi ayında çalışacağını belirler. 1 (Ocak) ile 12 (Aralık) arası değerler veya JAN-DEC formatı kullanılabilir.

  5. Haftanın Günü (Day of Week - 0 - 6 veya İsim Kısaltmaları): Haftanın hangi gününde çalışacağını belirler. 0 Pazar günüdür (bazı sistemlerde 7 de Pazar olarak kabul edilir). 1 Pazartesi, 6 Cumartesi'dir. SUN-SAT kısaltmaları da geçerlidir.

Özel Karakterlerin Anlamları (Yıldız, Virgül, Tire ve Eğik Çizgi)

Cron sözdizimini esnek kılan unsurlar, alanlar içinde kullanılan özel operatörlerdir:

  • Yıldız (* - Wildcard): "Her" veya "Tüm olası değerler" anlamına gelir. Dakika alanındaki *, "her dakika" anlamına gelir.

  • Virgül (, - Değer Listesi): Birden fazla ayrık değeri listelemek için kullanılır. Örneğin saat alanında 1,5,11 yazılması, komutun saat 01:00, 05:00 ve 11:00'da çalıştırılacağını gösterir.

  • Tire (- - Aralık Tanımı): Birbirini takip eden ardışık bir değer aralığını belirtir. Haftanın günü alanında 1-5 yazılması, Pazartesi'den Cuma'ya kadar olan iş günlerini kapsar.

  • Eğik Çizgi (/ - Adım/Aralık Belirteci): Belirli bir aralıkta atlama miktarını ifade eder. Dakika alanında */15 yazılması, "her 15 dakikada bir" (0, 15, 30, 45. dakikalar) anlamına gelir. Saat alanında 0-23/2 yazılması, her iki saatte bir tetikleme sağlar.

Temel ve Gelişmiş Zamanlama Örnekleri

Zamanlama kalıplarını doğru kurgulamak, gereksiz kaynak tüketimini önlemenin anahtarıdır. Aşağıda kurumsal altyapılarda en sık kullanılan standart ve ileri düzey zamanlama örnekleri yer almaktadır.

Sık Kullanılan Cron Zamanlama Kalıpları

  • Her 5 dakikada bir çalıştırma:

*/5 * * * * /usr/bin/php /var/www/html/artisan schedule:run

  • Her gün gece yarısı (00:00) çalıştırma:

0 0 * * * /usr/local/bin/daily-cleanup.sh

  • Her iş günü sabah saat 08:30'da çalıştırma:

30 8 * * 1-5 /usr/bin/python3 /opt/scripts/morning_report.py

  • Her ayın 1'inde saat 04:00'da faturalandırma betiği çalıştırma:

0 4 1 * * /usr/bin/node /opt/billing/invoice_generator.js

  • Hafta sonu (Cumartesi ve Pazar) gece 02:00'da derin disk taraması:

0 2 * * 6,0 /usr/bin/clamscan -r /home

Ayrıca bazı modern cron uygulamalarında özel takma adlar (shortcuts) desteklenir:

  • @reboot : Sunucu her yeniden başladığında bir kez çalışır.

  • @yearly veya @annually : 0 0 1 1 * ile eşdeğerdir.

  • @monthly : 0 0 1 * * ile eşdeğerdir.

  • @weekly : 0 0 * * 0 ile eşdeğerdir.

  • @daily veya @midnight : 0 0 * * * ile eşdeğerdir.

  • @hourly : 0 * * * * ile eşdeğerdir.

İleri Düzey Senaryolar ve Komut Birleştirme

Karmaşık üretim ortamlarında tek bir komut çalıştırmak yerine ardışık adımların birbirinin başarı durumuna göre yürütülmesi gerekir.

  1. Mantıksal VE Operatörü (&&): İlk komut sadece ve sadece başarılı olursa (çıkış kodu 0 dönerse) ikinci komut çalıştırılır.

0 1 * * * /usr/bin/pg_dump dbname > /tmp/db.sql && /usr/bin/aws s3 cp /tmp/db.sql s3://my-backups/

  1. Sıralı Çalıştırma Operatörü (;): İlk komutun başarılı olup olmadığına bakılmaksızın sıradaki komut yürütülür.

0 3 * * * /opt/scripts/task1.sh ; /opt/scripts/task2.sh

  1. Çıktı Yönlendirme ve Sessize Alma (I/O Redirection): Cron komutları varsayılan olarak ürettikleri her çıktıyı sistem kullanıcısına yerel e-posta (mail) olarak göndermeye çalışır. Posta kutusunun dolmasını engellemek veya logları ayrıştırmak için standart çıktı (stdout - dosya tanımlayıcı 1) ve standart hata (stderr - dosya tanımlayıcı 2) yönlendirilir:

  • Tüm çıktıları yok sayma (sessiz mod):

*/10 * * * * /usr/local/bin/sync.sh > /dev/null 2>&1

  • Standart çıktıları ve hataları ayrı log dosyalarına yazma:

0 2 * * * /usr/local/bin/maintenance.sh >> /var/log/maintenance.log 2>> /var/log/maintenance_error.log

Cron Job Kurulumu ve Yapılandırma Yöntemleri

Zamanlanmış görevlerin sisteme tanımlanması, sunucu altyapısına ve erişim yetkilerine göre iki farklı yöntemle gerçekleştirilir: Web tabanlı kontrol panelleri (cPanel, Plesk, DirectAdmin) veya doğrudan SSH üzerinden terminal komut satırı.

cPanel ve Kontrol Panelleri Üzerinden Görsel Yapılandırma

Paylaşımlı hosting veya yönetim paneli bulunan sunucularda komut satırı bilgisine ihtiyaç duyulmadan cron görevleri tanımlanabilir:

  1. Panel Oturumu ve Cron Menüsü: cPanel hesabına giriş yapılır ve "Gelişmiş" (Advanced) sekmesi altındaki Zamanlanmış Görevler (Cron Jobs) simgesine tıklanır.

  2. E-posta Bildirim Ayarı: Hata veya çıktı durumunda bildirim gönderilecek e-posta adresi belirlenir ya da devre dışı bırakılır.

  3. Zaman Aralığı Seçimi: "Ortak Ayarlar" (Common Settings) açılır menüsünden hazır kalıplar (örneğin "Günde bir kez", "Saatte bir kez") seçilebilir veya dakika, saat, gün kutucuklarına özel değerler girilebilir.

  4. Komut Girişi: Çalıştırılacak komut, mutlak yol (absolute path) kullanılarak yazılır. Örneğin bir PHP betiği web üzerinden tetiklenecekse:

/usr/bin/curl -s -o /dev/null https://example.com/cron-runner.php
veya doğrudan sunucu çekirdeğinden PHP CLI ile çalıştırılacaksa:
/usr/local/bin/php /home/username/public_html/cron.php

Terminal ve SSH Üzerinden Manuel Crontab Yönetimi

VPS, VDS veya Dedicated sunucularda sistem yöneticileri doğrudan SSH bağlantısı ile terminal üzerinden crontab yönetimi gerçekleştirir.

Temel Crontab Komutları:

  • crontab -e : Aktif kullanıcının crontab dosyasını varsayılan metin düzenleyicide (nano veya vim) açar ve düzenleme imkanı verir. İlk çalıştırmada editör seçimi talep edebilir.

  • crontab -l : Aktif kullanıcının crontab dosyasındaki tüm mevcut kuralları listeler, içeriği ekrana yazdırır.

  • crontab -r : Aktif kullanıcının crontab dosyasını tamamen siler (Geri dönüşü olmadığı için son derece dikkatli kullanılmalıdır).

  • crontab -u username -e : Root yetkisine sahip bir yöneticinin belirli bir kullanıcının crontab dosyasını düzenlemesini sağlar.

Zamanlanmış Görevlerde Kritik Güvenlik ve Performans Uyarıları

Zamanlanmış görevler doğru yönetilmediğinde sunucu kilitlenmelerine, veri tabanı tutarsızlıklarına ve güvenlik açıklarına neden olabilir. Arka planda sessizce çalışan bir betiğin sonsuz döngüye girmesi veya planlanandan uzun sürmesi tüm sunucu kaynaklarını tüketebilir.

Sunucu Yükü (Server Load) ve Kaynak Tüketimi Kontrolü

Birden fazla yoğun kaynak tüketen cron görevinin aynı dakikada (örneğin gece 00:00'da) başlaması, CPU ve I/O darboğazına (bottleneck) yol açar. Görev zamanlamaları planlanırken saat başları yerine 00:17, 00:43 gibi rastgele dağıtılmış dakikalar tercih edilmelidir.

Ağır işlem yapan arka plan betiklerinin sistem genelindeki önceliğini düşürmek ve kaynakları sınırlandırmak için nice ve ionice araçları kullanılır:

  • nice -n 19 /path/to/heavy-script.sh : Komutun CPU önceliğini en düşük seviyeye indirir; sunucu meşgulken diğer web isteklerine öncelik tanınır.

  • ionice -c 3 /path/to/disk-heavy-script.sh : Komutun disk okuma/yazma önceliğini boşta kalma moduna (idle) alır.

Çakışan Görevlerin Yaratabileceği Riskler ve Önlemler

Bir cron görevi her 5 dakikada bir çalışacak şekilde ayarlandığında, ancak betiğin çalışması beklenmeyen bir veri hacmi nedeniyle 8 dakika sürdüğünde ciddi bir çakışma riski oluşur. İkinci işlem tetiklendiğinde ilk işlem henüz tamamlanmadığı için aynı veritabanı kayıtları üzerinde eşzamanlı değişiklik yapılmaya çalışılır; bu durum veri bozulmalarına (race condition) ve bellek taşmalarına neden olur.

Bu sorunu çözmek için kilit mekanizmaları (mutex / lock files) kullanılmalıdır. Linux ortamında flock aracı ile bir görevin aynı anda sadece tek bir örneğinin çalışması garanti altına alınır:

# Görev kilitliyse yeni instance başlatmadan sessizce çıkış yapar:
*/5 * * * * /usr/bin/flock -n /tmp/task.lock /usr/bin/php /var/www/script.php

Hata Loglama (Logging) ve Süreç İzleme Sistemleri

Cron job'lar terminal oturumundan bağımsız çalıştıkları için oluşan hatalar ekrana düşmez. Görevlerin sessizce başarısız olması (silent failure) durumunu engellemek için kurumsal altyapılarda izleme sistemleri entegre edilir:

  • Sentry / Bugsnag Entegrasyonları: Betik dillerinde yazılan cron betiklerinin içine hata yakalama blokları yerleştirilir.

  • Dead Man's Snitch / Cronitor / Healthchecks.io: Belirlenen zaman aralığında görev bitiminde bir ping (HTTP GET) atılır. Eğer beklenen süre içinde ping gelmezse nöbetçi mühendise veya sisteme alarm iletilir.

  • Environment Değişkenleri ve PATH Hatası: Cron, kullanıcının interaktif kabuğundaki (interactive shell) .bashrc veya .bash_profile dosyalarını yüklemez; son derece kısıtlı bir PATH ortamı ile çalışır. Bu nedenle betiklerin içinde yalnızca php veya python yazmak "command not found" hatası doğurabilir. Her zaman /usr/bin/php gibi tam yol kullanılmalıdır.

Sıkça Sorulan Sorular

Cron job ile standart bir terminal komutu arasındaki temel fark nedir?

Standart bir terminal komutu kullanıcı tarafından manuel olarak tetiklenir ve oturum kapandığında sonlanabilir. Cron job ise işletim sistemi daemon'u tarafından arka planda, kullanıcı oturumundan bağımsız ve önceden tanımlanmış bir zaman çizelgesine göre otomatik olarak çalıştırılır.

WordPress WP-Cron ile sunucu düzeyindeki gerçek Cron Job arasındaki fark nedir?

WP-Cron, yalnızca siteye bir ziyaretçi geldiğinde sayfa yüklenirken tetiklenen sanal bir mekanizmadır ve düşük trafikli sitelerde görevler gecikebilir. Gerçek sunucu cron job'u ise site trafiğinden tamamen bağımsız olarak doğrudan işletim sistemi tarafından tam vaktinde yürütülür.

Crontab dosyasında PATH hatası neden oluşur ve nasıl çözülür?

Cron daemon'u, kullanıcının terminaldeki geniş PATH ortam değişkenlerini otomatik olarak yüklemez ve kısıtlı bir dizin kümesi kullanır. Bu sorunu çözmek için komut satırlarında doğrudan ikili dosyaların tam mutlak yolları (örneğin php yerine /usr/bin/php ) kullanılmalı veya crontab'ın en üstüne PATH tanımı eklenmelidir.

Bir cron görevinin aynı anda birden fazla kez çalışmasını nasıl engelleyebilirim?

Görevin çakışmasını engellemek için Linux sistemlerinde yer alan flock aracı kullanılır. Komutun başına flock -n parametresi eklendiğinde, önceki işlem bitmeden yeni bir alt işlem başlatılmaz ve çakışma önlenir.

Cron job'ların çalışıp çalışmadığı sistem üzerinden nasıl kontrol edilir?

Ubuntu ve Debian sistemlerde /var/log/syslog dosyası, RHEL ve CentOS sistemlerde ise /var/log/cron dosyası filtrelenerek kontrol edilir. grep CRON /var/log/syslog komutu ile geçmiş tetiklenmeler ve komut çıkışları incelenebilir.

Cron job'un saniye hassasiyetinde çalışması mümkün müdür?

Standart Cron daemon'u en küçük zaman birimi olarak 1 dakikayı destekler ve doğrudan saniye bazlı zamanlama yapamaz. Saniye hassasiyetinde işlem yürütmek için arka planda sürekli çalışan kuyruk yöneticileri (Supervisor, Systemd Timer) veya komut içine sleep gecikmeleri ekleyen özel kabuk döngüleri kullanılır.

Cron görevlerinin çıktılarını tamamen susturmak sunucuya zarar verir mi?

Komutun sonuna >/dev/null 2>&1 ekleyerek çıktıları tamamen susturmak sunucuyu yormaz ancak olası çalışma hatalarının loglanmasını engeller. Bu nedenle kritik üretim görevlerinde çıktıları yok saymak yerine özel bir log dosyasına ( >> /var/log/gorev.log 2>&1 ) yazdırmak önerilir.

Crontab dosyasında saat dilimi (Timezone) nasıl ayarlanır?

Cron varsayılan olarak sunucunun ana sistem saat dilimini (genellikle UTC) referans alır. Farklı bir saat dilimine göre görev planlamak için crontab dosyasının en üst satırına CRON_TZ=Europe/Istanbul parametresi eklenerek zamanlama o bölgeye göre yapılandırılabilir.

Son Adım

Dijital projenizi bugün planlayalım

Web, yazılım, e-ticaret, mobil uygulama, entegrasyon, SEO veya GEO ihtiyacınızı net bir kapsama dönüştürelim.

Cron Job Nedir, Zamanlanmış Görevler Nasıl Çalışır? | Webizm