Cron Nedir? Linux'ta Cron Job Nasıl Kurulur?
Cron nedir, nasıl kullanılır? Crontab söz dizimi, zamanlama örnekleri, yedek ve yeniden başlatma görevleri, sık hatalar, cron günlükleri ve systemd timer.

İçindekiler
Cron, Linux sunucularda komutları ve betikleri belirli zamanlarda otomatik olarak çalıştıran zamanlayıcıdır. Her gece yedek almak, oyun sunucusunu her sabah yeniden başlatmak, eski günlük dosyalarını temizlemek ya da bir siteyi düzenli olarak kontrol etmek gibi işleri bir kez tanımlarsınız, cron gerisini halleder. Cron ile zamanlanan bu görevlere cron job denir.
Bu rehberde crontab söz dizimini, sık kullanılan zamanlama örneklerini, pratik görevleri, cron'un en çok can sıkan hatalarını ve alternatif olarak systemd timer'ı anlatıyoruz.
Crontab nasıl düzenlenir?
Her kullanıcının kendi görev listesi vardır ve buna crontab denir. Düzenlemek için:
crontab -e
İlk çalıştırmada bir metin düzenleyici seçmeniz istenir; nano en kolayıdır. Mevcut görevleri görmek için crontab -l kullanılır. Root yetkisi isteyen görevler için sudo crontab -e ile root'un crontab'ını düzenleyin.
Crontab söz dizimi
Her satır bir görevdir ve beş zaman alanı ile çalıştırılacak komuttan oluşur:
┌───────── dakika (0–59)
│ ┌─────── saat (0–23)
│ │ ┌───── ayın günü (1–31)
│ │ │ ┌─── ay (1–12)
│ │ │ │ ┌─ haftanın günü (0–7, 0 ve 7 pazar)
│ │ │ │ │
* * * * * komut
| Sembol | Anlamı | Örnek |
|---|---|---|
* | Her değer | * saat alanında: her saat |
, | Liste | 1,15 ayın 1'i ve 15'i |
- | Aralık | 1-5 pazartesiden cumaya |
/ | Adım | */10 dakika alanında: her 10 dakikada |
Sık kullanılan zamanlama örnekleri
| Zamanlama | Anlamı |
|---|---|
*/5 * * * * | Her 5 dakikada bir |
0 * * * * | Her saat başı |
30 3 * * * | Her gün 03:30'da |
0 6 * * 1 | Her pazartesi 06:00'da |
0 0 1 * * | Her ayın 1'inde gece yarısı |
0 9-18 * * 1-5 | Hafta içi 09:00–18:00 arasında saat başı |
@reboot | Sunucu her açıldığında bir kez |
@daily | Her gün gece yarısı |
Bir ifadenin ne zaman çalışacağından emin değilseniz crontab.guru gibi bir sitede ifadeyi yazıp anlamını görebilirsiniz.
Pratik cron görevleri
Her gece veritabanı yedeği:
0 4 * * * /root/yedekle.sh >> /var/log/yedekle.log 2>&1
Düzenli ve sunucudan bağımsız yedek almayı Sunucu yedekleme rehberimizde ayrıntılı anlattık.
Oyun sunucusunu her sabah yeniden başlatmak:
0 6 * * * systemctl restart minecraft
Uzun süre açık kalan bazı oyun sunucuları zamanla daha fazla bellek kullanır; oyuncuların en az olduğu saatte yapılan günlük bir yeniden başlatma bunu önler. Bu örnek, oyun sunucusunun minecraft adında bir systemd servisi olarak çalıştığını varsayar; root crontab'ına eklenmelidir.
Eski günlük dosyalarını temizlemek:
0 5 * * 0 find /var/www/site/logs -name "*.log" -mtime +14 -delete
Her pazar, 14 günden eski günlük dosyalarını siler.
Bir sitenin ayakta olduğunu kontrol etmek:
*/5 * * * * curl -fsS https://alanadiniz.com > /dev/null || echo "Site cevap vermiyor" >> /var/log/site-kontrol.log
Cron'un sık yapılan hataları
Cron görevleri terminalde çalışan aynı komutla aynı ortamda çalışmaz. Görevlerin çoğu şu sebeplerden sessizce başarısız olur:
- PATH eksikliği: Cron çok kısa bir
PATHile çalışır; terminalde bulunan bir komut cron'da bulunamayabilir. Komutların tam yolunu yazın (which nodesize yolu gösterir) ya da crontab'ın en üstüne birPATH=satırı ekleyin. - Göreli yollar: Cron görevleri kullanıcının ev klasöründe başlar. Betiklerde ve dosya adlarında her zaman
/home/kullanici/betik.shgibi tam yollar kullanın ya da komuttan öncecd /klasor &&yazın. %karakteri: Crontab'da%satır sonu anlamına gelir.date +%Fgibi kullanımlarda\%şeklinde kaçış yapın.- Çalıştırma izni: Betiğin
chmod +xile çalıştırılabilir olduğundan ve ilk satırında#!/bin/bashgibi bir yorumlayıcı bulunduğundan emin olun. - Çıktının kaybolması: Görevin çıktısını ve hatalarını bir dosyaya yönlendirin (
>> /var/log/gorev.log 2>&1). Aksi hâlde bir hata olduğunda nedenini göremezsiniz. - Saat dilimi: Cron sunucunun saat dilimini kullanır.
timedatectlile kontrol edin; UTC kullanan bir sunucuda görevler yerel saatinizden farklı bir saatte çalışır. - Üst üste binen çalışmalar: Uzun bir görev bir sonraki zamanına kadar bitmezse iki kopya aynı anda çalışabilir. Komutun başına
flock -n /tmp/gorev.lockekleyerek bunu önleyin.
Cron günlüklerini kontrol etmek
Bir görevin çalışıp çalışmadığını görmek için:
grep CRON /var/log/syslog
Ubuntu ve Debian'ın güncel sürümlerinde bu dosya yoksa journalctl -u cron, AlmaLinux'ta journalctl -u crond ya da /var/log/cron dosyasını kullanın. Günlük, görevin başladığını gösterir; görevin başarılı olup olmadığını ise yalnızca kendi yönlendirdiğiniz çıktı dosyasından anlayabilirsiniz.
Sistem genelinde cron dosyaları
Kullanıcı crontab'larının yanında sistem genelinde görevler için de klasörler vardır:
/etc/cron.d/: Paketlerin ve yöneticilerin ayrı dosyalar olarak eklediği görevler. Buradaki satırlarda zaman alanlarından sonra görevi çalıştıracak kullanıcı adı da yazılır./etc/cron.daily/,/etc/cron.weekly/,/etc/cron.monthly/: İçine konan çalıştırılabilir betikler günde, haftada ya da ayda bir çalışır.
Örneğin Certbot'un SSL sertifikalarını yenileme görevi ve günlük dosyalarını döndüren logrotate bu klasörlerden ya da systemd timer'larından çalışır.
Alternatif: systemd timer
Güncel Linux dağıtımlarında systemd timer, cron'a güçlü bir alternatiftir. Görev bir servis dosyası, zamanlama bir timer dosyası olarak yazılır. Kurulumu cron'dan biraz daha uzundur, ama avantajları vardır:
- Görevin çıktısı otomatik olarak
journalctlgünlüğüne düşer. Persistent=trueayarıyla sunucu kapalıyken kaçırılan görevler açılışta çalıştırılır.- Bir görevin önceki çalışması bitmeden yenisi başlamaz.
systemctl list-timers komutuyla sunucunuzdaki bütün timer'ları ve bir sonraki çalışma zamanlarını görebilirsiniz. Basit görevler için cron hâlâ en hızlı çözümdür; hata ayıklamanın ve güvenilirliğin önemli olduğu görevlerde timer'ı tercih edebilirsiniz.
Nodesty'de zamanlanmış görevler
Nodesty AMD Ryzen 9 9950X VDS paketlerinde tam root erişimiyle cron ve systemd timer'ı dilediğiniz gibi kullanabilirsiniz; Linux komutlarına yeniyseniz Temel Linux komutları rehberimizle başlayın. Web hosting paketlerimizde ise SSH erişimi olmadan, cPanel ve DirectAdmin'in cron bölümünden zamanlanmış görevlerinizi oluşturabilirsiniz.
Sıkça Sorulan Sorular
Cron job çalışmıyor, neden?
En sık sebepler eksik PATH yüzünden komutun bulunamaması, göreli dosya yolları, betiğin çalıştırma izninin olmaması ve crontab içinde kaçışsız kullanılan % karakteridir. Görevin çıktısını bir dosyaya yönlendirip hata mesajını okumak sorunu çoğu zaman hemen gösterir.
Cron hangi saat dilimini kullanır?
Cron, sunucunun sistem saat dilimini kullanır. Birçok sunucu UTC ile çalışır; Türkiye saatiyle 03:00'te çalışmasını istediğiniz bir görev UTC'de 00:00'a denk gelir. timedatectl komutuyla sunucunun saat dilimini görebilir ve gerekirse değiştirebilirsiniz.
Cron ile her 30 saniyede bir görev çalıştırabilir miyim?
Cron'un en küçük birimi dakikadır. Daha sık çalıştırmanız gereken işler için ya görevi bir döngü içinde bekleyen bir servis olarak yazın ya da systemd timer kullanın. Saniyeler düzeyinde bir ihtiyacınız varsa çoğu zaman sürekli çalışan bir uygulama daha doğru çözümdür.
Web hostingde cron job kurabilir miyim?
Evet. cPanel'de Cron Jobs, DirectAdmin'de Cronjobs bölümünden SSH erişimine ihtiyaç duymadan zamanlanmış görev oluşturabilirsiniz. WordPress'in kendi zamanlayıcısı yerine gerçek bir cron görevi kullanmak, özellikle az ziyaret alan sitelerde zamanlanmış yazıların ve yedeklerin tam vaktinde çalışmasını sağlar.
Bir görevin aynı anda iki kez çalışmasını nasıl önlerim?
Uzun süren bir görev bir sonraki çalışma zamanına kadar bitmezse ikinci bir kopyası başlayabilir. Komutun başına flock -n /tmp/gorev.lock ekleyin; önceki çalışma sürerken yeni kopya hiç başlamaz.
Windows sunucuda cron var mı?
Windows'ta cron yoktur; aynı işi Görev Zamanlayıcı (Task Scheduler) yapar. Grafik arayüzünden ya da PowerShell'deki Register-ScheduledTask komutuyla belirli saatlerde ya da sunucu açılışında çalışacak görevler oluşturabilirsiniz.
Yazar hakkında
Nodesty Ekibi · Altyapı ve Destek
Nodesty ekibi sunucularımızı, ağımızı ve DDoS korumamızı her gün işletir ve müşteri destek taleplerini 7/24 yanıtlar. Bu rehberler o deneyimden yazılır.
İlgili yazılar

Load Balancer (Yük Dengeleyici) Nedir? Nasıl Çalışır?
Load balancer nedir, ne işe yarar? Yük dengeleme yöntemleri, sağlık kontrolleri, oturum yönetimi, Nginx ile yük dengeleme, HAProxy ve ne zaman gerekir.

Ubuntu Sürüm Yükseltme: Sunucuyu Yeni LTS Sürümüne Taşıma
Ubuntu sunucu yeni LTS sürümüne nasıl yükseltilir? Yedek, hazırlık, do-release-upgrade adımları, SSH bağlantısı, sonrası kontroller ve temiz kurulum.

Laravel Uygulamasını VDS'te Yayınlama Rehberi
Laravel uygulaması sunucuda nasıl yayınlanır? PHP-FPM, Composer, .env, veritabanı, dosya izinleri, Nginx, kuyruk işçisi, zamanlayıcı, SSL ve güncelleme.