Cronjob Nedir? Eksiksiz Başlangıç Rehberi (2026)

TemelYayın: Güncellendi: 10 dk okumaHazırlayan: cronjob.com.tr Editörleri

Sunucunuzda her gece yedek almak, haftalık rapor hazırlamak veya stokları düzenli güncellemek için bilgisayar başında beklemeniz gerekmez. Cronjob, belirlediğiniz takvime göre bir komutu otomatik çalıştıran zamanlanmış görevdir. Görevi tanımlamak kadar doğru kullanıcıyla çalıştırmak, sonucunu kaydetmek ve hatasını fark etmek de önemlidir.

Bu başlangıç rehberi, “cron job nedir” sorusundan ilk güvenli denemeye kadar ilerler. Linux sunucu kullanan geliştiriciler, hosting yöneten site sahipleri ve HTTP üzerinden görev tetiklemek isteyenler için hangi yöntemin uygun olduğunu örneklerle açıklar.

Cronjob Nedir? Cron, Crontab ve Cron Job Ayrımı

Cron, Unix ve Linux ortamlarında kullanılan zamanlayıcı servistir; daemon denilen arka plan süreci olarak çalışır. Cronjob veya ayrı yazımıyla cron job, bu servisin başlattığı görevi ifade eder. İki yazım aynı kavramdır; farklı bir yazılım ya da ayrı bir zamanlama türü değildir.

Crontab, görevlerin zaman ve komut bilgilerinin tutulduğu listedir; aynı adlı komut bu listeyi düzenlemeye yarar. Cron ifadesi ise yalnızca zamanlama bölümüdür. Bir PHP dosyası görev olabilir, fakat dosyanın var olması onu kendiliğinden zamanlamaz. Görev, çalıştırılacak komutla birlikte crontab'a kaydedilmelidir.

Her kullanıcının görev listesi ayrı olabilir. Komut da o kullanıcının izinleriyle çalışır; kişisel crontab'a kayıt eklemek yönetici yetkisi kazandırmaz. Listeyi yönetme ayrıntıları için crontab kullanım kılavuzunu inceleyebilirsiniz.

Cronjob Neden Kullanılır?

Tekrarlanan bir işlemi standart komutla çalıştırmak unutma riskini azaltır ve uygulanan parametreleri tutarlı kılar. Ağır raporları düşük trafik saatine almak, veritabanı ile web isteklerinin aynı anda kaynak tüketmesini azaltabilir. Ancak doğru saat seçimi işin hızlı veya başarılı biteceğini garanti etmez; süreyi gerçek verinizle ölçmelisiniz.

Kullanım alanları arasında veritabanı yedekleme, uygulama önbelleğini yenileme, sitemap üretme, bülten gönderme, stok senkronizasyonu ve disk kullanımı raporu bulunur. Log rotasyonu veya sertifika yenileme gibi sistemde zaten zamanlanan işleri eklemeden önce mevcut görevleri kontrol edin; ikinci bir zamanlayıcı gereksiz tekrar yaratabilir.

Cron, takvime bağlı işler için uygundur. Sipariş gelir gelmez e-posta göndermek gibi olaya bağlı bir işlemde uygulamanın olay mekanizması veya iş kuyruğu daha doğrudan çözümdür. İhtiyacı “hangi saatte?” yerine “hangi olaydan sonra?” diye tanımlıyorsanız bu ayrımı baştan yapın.

Cronjob Nasıl Çalışır?

Cron servisi zaman alanlarını geçerli zamanla karşılaştırır, eşleşen görevin komutunu ilgili kullanıcı adına başlatır. Komutun standart çıktısı ve hata çıktısı bir dosyaya yönlendirilebilir. E-postayla çıktı teslimi ise sistemde çalışan bir posta altyapısı gerektirir; bildirim gelmemesi başarı kanıtı değildir. Bu çalışma modeli Cronie servis belgesinde açıklanır.

Sunucunun, cron servisinin ve komutun ihtiyaç duyduğu bileşenlerin çalışır olması gerekir. Kendi bilgisayarınızı kapatmanız uzak sunucudaki işi durdurmaz; görevin kurulduğu makinenin kapanması ise çalışmayı engeller. Cron'un komutu başlatması, raporun üretildiği veya yedeğin geri yüklenebilir olduğu anlamına gelmez.

# Systemd kullanan Debian/Ubuntu sistemlerinde
systemctl status cron
# Cronie kullanan dağıtımlarda servis adı genellikle crond olur
systemctl status crond

Bu iki komut alternatif servis adlarını gösterir. Unit cron.service could not be found görürseniz önce dağıtımınızda kullanılan servis adını ve cron paketinin kurulu olup olmadığını doğrulayın. Minimal sunucu veya konteyner imajında cron'un hazır bulunduğunu varsaymayın.

Crontab Sözdizimi ve Temel Örnekler

Kişisel crontab satırı, boşlukla ayrılan beş zaman alanından ve ardından gelen komuttan oluşur. Sıra dakika, saat, ayın günü, ay, haftanın günü şeklindedir. Standart biçimde saniye alanı bulunmaz.

# dakika saat ayın_günü ay haftanın_günü komut
0 3 * * * /bin/sh /home/kullanici/scripts/yedek.sh
*/15 * * * * /usr/bin/php /var/www/site/cron.php
0 9 * * 1 /bin/sh /home/kullanici/scripts/haftalik-rapor.sh
0 0 1 * * /bin/sh /home/kullanici/scripts/aylik-bakim.sh
0 8-18 * * 1-5 /bin/sh /home/kullanici/scripts/kontrol.sh

Bu örnekler sırasıyla her gün 03:00, her saatin 0, 15, 30 ve 45. dakikaları, pazartesi 09:00, ayın ilk günü 00:00 ve hafta içi 08:00–18:00 arasında saat başlarını seçer. Dosya yolları örnektir; kendi betiğinizi hazırlamadan satırları kullanmayın.

* alanın tüm değerlerini, virgül listeyi, tire kapsayıcı aralığı, bölü işareti alan içindeki adımı belirtir. Ayın günü ve hafta günü birlikte sınırlandığında ortaya çıkan özel kuralları crontab sözdizimi referansında bulabilirsiniz. İfadenizi görsel olarak hazırlamak için cron ifadesi oluşturucuyu kullanabilirsiniz.

İlk Cronjob'unuzu Adım Adım Oluşturun

İlk denemede veri değiştirmeyen bir disk raporu kullanın. Aşağıdaki komutları görevi çalıştıracak Linux kullanıcısıyla uygulayın; bu örnekte sisteminizde /bin/df bulunmalıdır. command -v df farklı yol verirse crontab satırını buna göre düzeltin.

  1. Çıktı dizinini hazırlayın. Ev dizininizdeki klasör, yönetici yetkisi gerektirmeden rapor yazabileceğiniz bir konum sağlar.
  2. Komutu elle çalıştırın. Dosya oluşmalı ve disk bölümlerini göstermelidir. Bu aşamada hata varsa zamanlama eklemeyin.
  3. Görev listesini açın. crontab -e ile mevcut satırları koruyarak test satırını sona ekleyin. Son satırı Enter ile bitirin.
  4. Kaydedin ve kontrol edin. Nano'da Ctrl+O, Enter ve Ctrl+X; Vim'de :wq kullanın. crontab -l ile satırın kayıtlı olduğunu doğrulayın.
  5. Sonucu gözleyin. Sonraki dakika sınırından sonra dosyayı yeniden okuyun. Test tamamlanınca aynı satırın zamanını 0 6 * * * yaparak her gün 06:00'ya alın.
# Terminalde
mkdir -p "$HOME/cron-logs"
command -v df
/bin/df -h > "$HOME/cron-logs/disk-raporu.txt" 2>&1
cat "$HOME/cron-logs/disk-raporu.txt"
crontab -e

# Crontab içine; test için her dakika
* * * * * /bin/df -h > "$HOME/cron-logs/disk-raporu.txt" 2>&1

# Yeniden terminalde
crontab -l
cat "$HOME/cron-logs/disk-raporu.txt"

> önceki raporu değiştirir; >> ise dosyaya ekler. 2>&1 hata çıktısını da aynı dosyada toplar. İlk testte çıktıyı /dev/null ile gizlemeyin. Üretimde büyüyen günlükler için saklama ve rotasyon planı belirleyin.

Gerçek Dünya Senaryoları

Gece uygulama dosyalarının yedeğini almak

Az değişen bir sitenin dosyalarını her gece 02:00'de arşivlemek, gün içindeki kaynak tüketimini azaltabilir. Önce hedef klasörü oluşturun ve görev kullanıcısının kaynakları okuyabildiğini doğrulayın. Bu örnek veritabanını yedeklemez; canlı veritabanı dosyalarını kopyalamak yerine veritabanına uygun yedekleme yöntemi gerekir.

# Terminalde
mkdir -p "$HOME/backups"
command -v tar
# Crontab içinde; tar yolu sisteminizde doğrulanmalıdır
0 2 * * * /usr/bin/tar -czf "$HOME/backups/site-$(date +\%F).tar.gz" -C /var/www/site public >> "$HOME/cron-logs/yedek.log" 2>&1

Arşivleri aynı diskte tutmak disk kaybına karşı yeterli değildir. Kopyayı ayrı bir konuma taşıyın, saklama süresini belirleyin ve test ortamında geri açmayı deneyin. Tarihli dosya adındaki yüzde kaçışları crontab içindir; normal kabukta aynı kaçışlara ihtiyaç yoktur.

Haftalık rapor ve e-ticaret senkronizasyonu

Pazartesi 09:00'da önceki haftanın sipariş özetini hazırlayan bir PHP betiği, ekibin aynı raporla başlamasını sağlar. Stok senkronizasyonunu ise ihtiyaca göre örneğin 15 dakikada bir planlayabilirsiniz. Güncelleme betiği aynı kaydı tekrar aldığında mükerrer işlem yapmamalı; son işlenen kayıt veya tarih bilgisini saklamalıdır.

0 9 * * 1 /usr/bin/php /var/www/site/haftalik-rapor.php >> "$HOME/cron-logs/rapor.log" 2>&1
*/15 * * * * /usr/bin/php /var/www/site/stok-guncelle.php >> "$HOME/cron-logs/stok.log" 2>&1

PHP'nin gerçek yolunu command -v php ile bulun. Raporun başlangıç ve bitiş kayıtları, işlenen kayıt sayısı ve uygulama hatası günlükte yer almalıdır. Daha fazla zamanlama için pratik crontab örneklerini inceleyebilirsiniz.

Cronjob Hangi Platformlarda Kullanılır?

Linux sunucuda doğrudan kişisel crontab kullanılır. cPanel ve Plesk gibi hosting panelleri görev tanımlama ekranı sunabilir; erişim ve en kısa aralık sağlayıcı politikasına bağlıdır. Komut yolu ve kullanıcı yetkisi panel kullanırken de önemlidir. cPanel cron job rehberi panel üzerinden ilerlemek isteyenler içindir.

macOS'ta cron kullanılabilse de işletim sisteminin yerel zamanlama seçenekleri de değerlendirilmelidir. Windows'ta yerel çözüm Görev Zamanlayıcı'dır; WSL içinde cron kullanacaksanız Linux ortamının ve servisin çalışır kalması gerekir. Konteyner ve bulut ortamlarında uygulamadan ayrı zamanlayıcı kullanmak, hangi bileşenin görevin sahibi olduğunu netleştirir.

Sık Hatalar ve Çözümleri

Komut bulunamıyor: php: not found

Cron ortamının PATH değeri terminalinizden farklı olabilir. php: not found hatasında PHP'nin kurulu olduğunu doğrulayın ve bulunan mutlak yolu kullanın. PHP betiğinizin ihtiyaç duyduğu ortam değişkenlerini ayrıca tanımlayın; etkileşimli oturum ayarlarının yüklenmesini beklemeyin.

Permission denied

Görev kullanıcısının betiği okuma, dizinlerden geçme veya çıktı dosyasına yazma izni eksik olabilir. Betiği doğrudan çalıştırıyorsanız çalıştırma iznini de kontrol edin. PHP yorumlayıcısına dosya veriyorsanız dosyanın okunabilir olması gerekir; herkese yazma izni vermek çözüm değildir.

No such file or directory

Göreli dosya yolları terminaldeki çalışma dizininize dayanıyor olabilir. Betikte mutlak yollar kullanın veya komuttan önce doğru dizine geçin. Dosya mevcutsa yorumlayıcı yolunu ve Windows satır sonlarından etkilenebilen betik başlığını da kontrol edin.

Yanlış saatte çalışıyor veya hiç başlamıyor

3 0 * * * 03:00 değil 00:03'tür. Dakika ve saati yeniden okuyun; sunucunun saat dilimini date ile kontrol edin. Systemd sistemlerinde journalctl -u cron veya kullanılan servise göre journalctl -u crond başlangıç kaydını gösterebilir. Günlüğe erişim izni gerekebilir; her sistem aynı dosyaya log yazmaz.

Bir önceki görev bitmeden yenisi başlıyor

Cron önceki çalışmanın bitmesini kendiliğinden beklemez. Süreyi ölçüp aralığı büyütün veya kilit mekanizması kurun. Birden fazla sunucuda yalnızca yerel dosya kilidi yeterli olmaz. Sorunu daraltmak için cron job hata çözüm rehberindeki kontrolleri izleyin.

Sınırlamalar, Güvenlik ve Alternatifler

Klasik cron, makine kapalıyken kaçırılan her çalışmayı otomatik telafi eden bir iş kuyruğu değildir. Başarısız komutu yeniden deneme, makineler arasında tek çalışma garantisi ve işlem geçmişi gibi ihtiyaçları uygulama veya ek araç sağlamalıdır. Aynı para transferi ya da e-posta iki kez tetiklenirse ne olacağını tasarlayın; yeniden çalıştırılabilirlik kritik bir uygulama özelliğidir.

İşi yalnızca komut satırı olarak değil, tetikleyici ve beklenen sonuçla birlikte tanımlamak için zamanlanmış görevin temel bileşenlerini inceleyin. Bir web servisinin dışarıdan erişilebilir olması cron görevinin tamamlandığını göstermez; cron ve uptime izleme kontrollerini ayrı ölçümler olarak planlayın.

Tek seferlik işler için at, sürekli açık olmayan makinelerde günlük gibi dönemsel işler için anacron, systemd sistemlerinde daha ayrıntılı servis ve zamanlama yönetimi için timer değerlendirilebilir. Uygulama kuyrukları ise uzun işlerin dağıtılması ve yeniden denenmesi gerektiğinde uygundur. Seçim ölçütlerini cron alternatifleri karşılaştırmasında bulabilirsiniz.

Görevi mümkün olan en dar yetkiyle çalıştırın. Parolaları komut satırına yazmak yerine erişimi sınırlandırılmış yapılandırmada tutun; loglara sır yazdırmayın. Kullanıcının değiştirebildiği bir betiği root olarak zamanlamak yetki yükseltme riski yaratır. Ayrıca betiklerin ve log dizinlerinin sahipliklerini kontrol edin.

cronjob.com.tr ile HTTP Üzerinden Görev Tetikleme

İşiniz HTTPS uç noktasıyla başlatılabiliyorsa sunucuda crontab düzenlemek yerine cronjob.com.tr kullanabilirsiniz. Yerel disk raporu gibi yalnızca makine içinden yapılması gereken bir komutu doğrudan çalıştırmaz. Uygulamanızın dışarıdan erişilebilen, yetkilendirilmiş bir uç noktası bulunmalıdır.

Örneğin https://example.com/jobs/stok-yenile adresini yalnızca POST kabul edecek şekilde tasarlayın. Uygulama X-Cron-Token header'ını sunucuda saklanan gizli değerle karşılaştırmalı, yanlışsa 403 vermeli ve hiçbir iş başlatmamalıdır. Token'ı URL sorgusuna koymayın; HTTPS kullanın. Uzun işi kuyrukta başlatıp kısa yanıt döndürüyorsanız yanıtın işi tamamlandı diye göstermediğini ayrıca izleyin.

  1. Panelde iş oluşturup uç nokta URL'sini ve POST metodunu girin.
  2. X-Cron-Token özel header'ına uygulamanızla aynı gizli değeri ekleyin.
  3. Örneğin 15 dakikalık hazır aralık veya */15 * * * * ifadesini seçin; işin saat dilimini doğrulayın. Varsayılan Europe/Istanbul'dur.
  4. Manuel çalıştırmayla yanıtı inceleyin; ardından uygulama tarafında stokların gerçekten güncellendiğini kontrol edin.

Hizmet ücretsizdir; kayıtta kredi kartı istenmez ve en kısa aralık 60 saniyedir. Yanıt bekleme süresi hazır aralıkta aralık eksi 5 saniye, en az 5 ve en fazla 290 saniyedir: bir dakikada 55, iki dakikada 115, beş dakika ve üzerinde 290 saniye. Cron ifadeli işlerde sınır 290 saniyedir.

HTTP 200–399 ve bağlantı hatası olmaması başarılı sayılır. Varsayılan ardışık hata eşiği 3'tür, 1–20 arasında ayarlanır; eşik aşılınca erişim sorunu, düzelince kesinti süresini içeren e-posta gönderilir. Aynı işin bildirimleri arasında en az 60 dakika vardır. Durum kodu, yanıt süresi, hata mesajı ve yanıt gövdesinin ilk yaklaşık 64 KB'ı kaydedilir; kayıtlar 7 gün tutulur.

Sıkça Sorulan Sorular (SSS)

Cronjob ile crontab arasındaki fark nedir?

Cronjob zamanlanmış görevin kendisidir. Crontab bu görevlerin zaman ve komut bilgilerinin tutulduğu listedir; crontab komutu da listeyi düzenlemeye yarar.

Cronjob saniye bazında çalıştırılabilir mi?

Standart beş alanlı cron biçiminin en küçük birimi dakikadır. Daha sık çalışma gerekiyorsa saniye desteği olan bir zamanlayıcı seçin; cronjob.com.tr için en kısa aralık 60 saniyedir.

Cronjob çalışıp çalışmadığını nasıl kontrol ederim?

Önce görevin crontab -l çıktısında bulunduğunu, sonra servis günlüğünde başlatıldığını kontrol edin. İşin kendi çıktısını ve beklenen dosya veya veri değişikliğini ayrıca doğrulayın; başlatma kaydı başarıyı tek başına göstermez.

Cronjob bir kez çalıştırılabilir mi?

Cron tekrarlanan takvimler içindir. Belirli bir gelecekte yalnızca bir kez çalışacak görev için at gibi tek seferlik zamanlama aracı daha uygundur.

Windows'ta cronjob kullanılabilir mi?

Windows'un yerel aracı Görev Zamanlayıcı'dır. WSL içindeki Linux ortamında cron kullanılabilir; zamanında çalışması için ilgili ortamın ve cron servisinin çalışır olması gerekir.

Hosting panelimde cronjob ayarı var mı?

cPanel ve Plesk gibi panellerde zamanlanmış görev ekranı bulunabilir. Paketinizin bu erişime izin verip vermediğini ve sağlayıcınızın aralık sınırlarını kontrol edin.

Hemen Ücretsiz Cron Job Oluşturun

HTTP görevlerinizi cronjob.com.tr ile zamanlayın. Ücretsiz kayıtta kredi kartı istenmez.

Ücretsiz Başla →

İlgili Rehberler