Cron Nedir? Linux Sunucularda Cron Job Yönetimi Rehberi
Cron Nedir? Linux Sunucularda Cron Job Yönetimi Rehberi
Son Güncelleme: Nisan 2026
Cron, Linux ve Unix tabanlı sistemlerde belirli komutların, scriptlerin veya bakım görevlerinin otomatik olarak çalıştırılmasını sağlayan zamanlayıcı (görev planlayıcı) mekanizmadır. Özellikle Linux sunucu yönetimi, otomasyon, yedekleme, log temizliği ve uygulama bakım süreçleri için kritik öneme sahiptir. Doğru yapılandırılmış bir cron job altyapısı, manuel işlemleri azaltır, hata riskini düşürür ve sistem sürekliliğini artırır.
İçindekiler
- Cron Nedir?
- Cron Ne İçin Kullanılır?
- Cron Yapısı ve Sözdizimi
- Crontab Yönetimi
- Pratik Uygulama Senaryoları
- Güvenlik ve En İyi Uygulamalar
- Cron Hataları ve Çözümleri
- Sıkça Sorulan Sorular
- Sonuç
Cron Nedir?
Cron servisi, sistemde belirlenen zaman aralıklarında otomatik görev çalıştırmak için kullanılan yerleşik bir servis yapısıdır. Bu görevler çoğu zaman cron job olarak adlandırılır. Bir sistem yöneticisi ya da geliştirici, belirli bir scriptin her gece 02:00’de çalışmasını, bir log dosyasının haftada bir temizlenmesini veya uygulama cache’inin düzenli aralıklarla yenilenmesini cron ile kolayca planlayabilir.
Linux ekosisteminde cron, özellikle tekrar eden işlemleri insan müdahalesi olmadan yürütmek için kullanılır. Bu durum hem operasyonel verimlilik sağlar hem de kritik görevlerin unutulmasını önler. Örneğin e-ticaret projelerinde sipariş raporlarının oluşturulması, yedek dosyalarının harici depolamaya gönderilmesi veya zamanlanmış veritabanı bakım işleri cron üzerinden yürütülebilir.
Paylaşımlı hosting ortamlarından özel Sanal Sunucu çözümlerine, kurumsal uygulamalardan mikro servis mimarilerine kadar çok farklı altyapılarda cron önemli bir rol oynar. Özellikle düzenli çalışan scriptleriniz varsa, otomasyon altyapısının doğru kurgulanması uzun vadede ciddi yönetim kolaylığı sunar.
Cron Ne İçin Kullanılır?
Cron job kullanım alanları oldukça geniştir. Sistem yönetimi, uygulama bakım süreçleri, veri işleme, güvenlik kontrolleri ve raporlama gibi pek çok görev düzenli zamanlama gerektirir. Bu yüzden cron, modern sunucu operasyonlarının temel taşlarından biri kabul edilir.
En yaygın kullanım alanları
- Yedekleme: Dosya ve veritabanı yedeklerinin günlük, haftalık veya aylık alınması.
- Log yönetimi: Eski logların arşivlenmesi, sıkıştırılması veya silinmesi.
- Cache temizliği: Uygulama önbelleğinin belirli aralıklarla yenilenmesi.
- Raporlama: Satış, trafik, sistem kullanımı veya hata raporlarının otomatik oluşturulması.
- Güvenlik taramaları: Dosya bütünlüğü kontrolü, zararlı yazılım taraması veya anomali tespiti.
- Sertifika ve servis kontrolleri: Süresi yaklaşan SSL sertifikalarının ya da cevap vermeyen servislerin izlenmesi.
- Uygulama görevleri: Laravel scheduler, WordPress wp-cron alternatifi veya özel script tetiklemeleri.
Özellikle Linux Hosting veya özel sunucu altyapılarında, cron kullanımı sayesinde manuel operasyon yükü önemli ölçüde azalır. Daha büyük yapılarda ise bu otomasyon, Kiralık Sunucu ve Bulut Sunucu ortamlarında ölçeklenebilir bakım süreçlerinin temelini oluşturur.
Cron Yapısı ve Sözdizimi
Cron satırları belirli bir zaman formatı ile yazılır. En temel haliyle bir cron kaydı, zaman alanları ve çalıştırılacak komuttan oluşur. Standart yapı şu şekildedir:
* * * * * komut
Bu beş yıldızın her biri ayrı bir zaman alanını temsil eder:
- 1. alan: Dakika (0-59)
- 2. alan: Saat (0-23)
- 3. alan: Ayın günü (1-31)
- 4. alan: Ay (1-12)
- 5. alan: Haftanın günü (0-7)
Sık kullanılan örnekler
0 2 * * * /usr/local/bin/yedekle.sh
*/5 * * * * /usr/bin/php /var/www/html/artisan schedule:run
0 0 * * 0 /usr/local/bin/haftalik-bakim.sh
30 3 1 * * /usr/local/bin/aylik-rapor.sh
Yukarıdaki örneklerde sırasıyla her gün 02:00’de çalışan bir yedek scripti, her 5 dakikada bir çalışan bir Laravel görev zamanlayıcısı, her pazar gece yarısında bakım scripti ve her ayın 1’inde çalışan rapor scripti görülmektedir.
Özel karakterler
- *: Her değer anlamına gelir.
- , : Birden fazla değeri belirtmek için kullanılır. Örnek:
1,15,30 - -: Aralık belirtir. Örnek:
1-5 - /: Adım belirtir. Örnek:
*/10her 10 dakikada bir anlamına gelir.
Cron ifadeleri basit görünse de yanlış planlama ciddi operasyonel sorunlara yol açabilir. Örneğin yoğun I/O (giriş/çıkış) tüketen bir görevi iş saatlerinde çalıştırmak, sistem performansını olumsuz etkileyebilir. Bu nedenle cron planlamasında zaman seçimi kritik bir konudur.
Crontab Yönetimi
Crontab, kullanıcı bazlı cron kayıtlarının tutulduğu yapılandırma alanıdır. Her kullanıcı kendi cron görevlerini ayrı ayrı tanımlayabilir. Sistem yöneticileri için bu yapı, kullanıcı izolasyonu ve görev ayrımı açısından oldukça faydalıdır.
Temel crontab komutları
crontab -l
crontab -e
crontab -r
crontab -l: Mevcut cron görevlerini listeler.crontab -e: Yeni cron kaydı eklemek veya mevcut kayıtları düzenlemek için kullanılır.crontab -r: Tüm cron kayıtlarını siler. Dikkatli kullanılmalıdır.
Sistem genelinde çalışan cron tanımları ise çoğu Linux dağıtımında /etc/crontab, /etc/cron.d/, /etc/cron.daily/, /etc/cron.weekly/ ve /etc/cron.monthly/ gibi dizinlerde bulunabilir. Bu yapı, özellikle çok sayıda bakım görevini merkezi olarak yönetmek isteyen ekipler için oldukça uygundur.
Çevresel değişkenler neden önemlidir?
Cron ortamı, normal shell (kabuk) oturumundan daha sınırlı çalışır. Bu nedenle bazı komutlar terminalde sorunsuz çalışırken cron altında hata verebilir. Bunun temel sebebi çoğu zaman PATH değişkeni, kullanıcı profili veya çalışma dizini farkıdır.
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=""
0 * * * * /usr/bin/php /var/www/app/script.php >> /var/log/app-script.log 2>&1
Bu örnekte cron ortamı için shell tanımı yapılmış, çalıştırılacak yollar net şekilde belirtilmiş ve çıktı log dosyasına yönlendirilmiştir. Bu yaklaşım hata ayıklama açısından son derece faydalıdır.
Pratik Uygulama Senaryoları
Teorik bilgi kadar pratik senaryolar da önemlidir. Aşağıda gerçek hayatta sık karşılaşılan cron kullanım örneklerini bulabilirsiniz.
1. Veritabanı yedeği alma
Her gece otomatik MySQL yedeği almak için aşağıdaki gibi bir script hazırlanabilir:
#!/bin/bash
TARIH=$(date +%F)
mysqldump -u root -p'SIFRE' veritabani_adi > /backup/veritabani_$TARIH.sql
Bu script aşağıdaki cron satırı ile her gece 01:30’da çalıştırılabilir:
30 1 * * * /bin/bash /root/scripts/db-yedek.sh
Eğer daha gelişmiş bir yedek stratejisi planlıyorsanız, düzenli yedekleri profesyonel bir Yedekleme Hizmeti ile desteklemek veri güvenliği açısından çok daha sağlıklı olacaktır.
2. Laravel görev zamanlayıcısı çalıştırma
Laravel projelerinde uygulama içi zamanlama altyapısı genellikle tek bir cron kaydı ile tetiklenir:
* * * * * /usr/bin/php /var/www/proje/artisan schedule:run >> /dev/null 2>&1
Bu sayede tüm zamanlanmış görevler Laravel tarafından merkezi şekilde yönetilir. Özellikle uygulama sunucuları üzerinde bu yöntem daha düzenli bir bakım süreci sağlar. İhtiyaca göre Uygulama Sunucuları çözümleri tercih edilebilir.
3. Geçici dosyaları temizleme
Disk kullanımını kontrol altında tutmak için geçici dosyalar düzenli olarak temizlenebilir:
0 4 * * * find /tmp -type f -mtime +3 -delete
Bu örnek, /tmp dizinindeki 3 günden eski dosyaları her gün saat 04:00’te siler. Ancak bu tür komutlar kullanılmadan önce mutlaka test ortamında doğrulanmalıdır.
4. SSL sertifika süresi kontrolü
Birçok işletme sertifika süresi dolduğu için kesinti yaşar. Bunu önlemek amacıyla belirli aralıklarla sertifika kontrol scriptleri çalıştırılabilir. Ayrıca ihtiyaç halinde SSL Sertifikası çözümleri ile sertifika yönetimini daha profesyonel hale getirmek mümkündür.
5. WordPress wp-cron yerine gerçek cron kullanımı
WordPress varsayılan olarak ziyaretçi trafiğine bağlı çalışan bir zamanlayıcı mantığına sahiptir. Trafiğin düşük olduğu sitelerde planlı görevler gecikebilir. Bu nedenle wp-cron devre dışı bırakılıp gerçek cron kullanmak daha sağlıklı olabilir.
*/10 * * * * /usr/bin/php /var/www/html/wp-cron.php >> /dev/null 2>&1
Özellikle yoğun içerik siteleri veya WooCommerce tabanlı projelerde bu yaklaşım görevlerin daha öngörülebilir çalışmasını sağlar.
Güvenlik ve En İyi Uygulamalar
Cron job kullanımı kolay görünse de güvenlik ve sürdürülebilirlik açısından dikkat edilmesi gereken önemli noktalar vardır. Hatalı yazılmış bir cron görevi sistem kaynaklarını tüketebilir, hassas verileri sızdırabilir veya beklenmeyen servis kesintilerine yol açabilir.
Dikkat edilmesi gereken temel kurallar
- Tam yol kullanın: Komutlar için
phpyerine/usr/bin/phpgibi mutlak yol kullanın. - Çıktıları loglayın: Hata ayıklama için standart çıktı ve hata akışını dosyaya yönlendirin.
- Yetkileri sınırlayın: Root yerine mümkün olan en düşük yetkili kullanıcı ile çalıştırın.
- Çakışmaları önleyin: Uzun süren görevlerin aynı anda ikinci kez başlamasını engelleyin.
- Kaynak tüketimini planlayın: Ağır görevleri yoğun trafik saatleri dışında çalıştırın.
- Hassas bilgileri koruyun: Script içine düz metin şifre yazmaktan kaçının.
Lock mekanizması kullanımı
Aynı görevin üst üste binmesini önlemek için kilit dosyası (lock file) yaklaşımı kullanılabilir:
* * * * * flock -n /tmp/rapor.lock /usr/bin/php /var/www/app/rapor.php
Bu yapı sayesinde bir görev halen çalışıyorsa ikinci bir kopya başlatılmaz. Özellikle veri işleme, kuyruk tüketimi ve dış API senkronizasyonu yapan scriptlerde bu yöntem kritik öneme sahiptir.
İzleme ve alarm üretimi
Cron görevlerinin sadece tanımlanması yeterli değildir; başarıyla çalışıp çalışmadıklarının da izlenmesi gerekir. Bunun için log analizi, e-posta bildirimi, webhook tetikleme veya harici izleme sistemleri kullanılabilir. Büyük projelerde bu sayede sessizce başarısız olan görevler erken fark edilir.
Daha gelişmiş ve kaynak gerektiren otomasyon altyapılarında, performans ve güvenlik için doğru sunucu seçimi oldukça önemlidir. Bu noktada Türkiye Kiralık Sunucu veya ihtiyaca göre Türkiye VDS Sunucu seçenekleri değerlendirilebilir.
Cron Hataları ve Çözümleri
Cron ile çalışırken bazı klasik sorunlar sıkça görülür. Bu sorunların çoğu birkaç temel prensip ile hızlıca çözülebilir.
1. Komut terminalde çalışıyor ama cron içinde çalışmıyor
En yaygın sebep PATH farkıdır. Komutları mutlak yol ile yazın ve gerekli çevresel değişkenleri tanımlayın. Ayrıca script içinde çalışma dizini bağımlılığı varsa cd komutu ile doğru klasöre geçiş yapın.
2. Yetki hataları
Çalıştırılan scriptin dosya izinleri veya ilgili dizinlere erişim yetkisi yetersiz olabilir. Script dosyası için yürütme izni verilmelidir:
chmod +x /root/scripts/bakim.sh
3. Çıktı üretimi nedeniyle mail birikmesi
Cron varsayılan olarak çıktı üretirse bunu yerel posta sistemine gönderebilir. Eğer bu istenmiyorsa çıktı /dev/null veya bir log dosyasına yönlendirilmelidir.
4. Aynı görevin birden fazla kez çalışması
Özellikle her dakika çalışan ama tamamlanması uzun süren scriptlerde görev çakışması yaşanabilir. Bu durumda flock veya özel kilit mekanizması kullanılmalıdır.
5. Yanlış zaman dilimi
Sunucunun zaman dilimi yanlış ayarlanmışsa cron görevleri beklenen saatte çalışmayabilir. Bu nedenle sistem saatinin ve timezone ayarlarının doğruluğu kontrol edilmelidir.
Sıkça Sorulan Sorular
Cron ile crontab aynı şey midir?
Hayır. Cron, zamanlanmış görevleri çalıştıran servistir. Crontab ise bu görevlerin tanımlandığı kullanıcı bazlı yapılandırma dosyası veya yönetim aracıdır.
Cron job kaç dakikada bir çalıştırılabilir?
Standart cron yapısında en düşük zaman aralığı genellikle 1 dakikadır. Daha sık tetikleme gerekiyorsa farklı zamanlayıcı çözümleri veya servis tabanlı worker mimarileri değerlendirilmelidir.
Hosting paketlerinde cron kullanılabilir mi?
Evet, birçok hosting altyapısında cron desteği bulunur. Ancak komut erişimi, zamanlama sıklığı ve kaynak limitleri kullanılan pakete göre değişebilir. Daha esnek kullanım için Hosting veya Türkiye VPS Sunucu çözümleri tercih edilebilir.
Cron job neden log dosyası oluşturmalıdır?
Çünkü arka planda çalışan görevlerin başarılı olup olmadığını anlamanın en pratik yolu log kayıtlarıdır. Özellikle kritik yedekleme, senkronizasyon ve bakım scriptlerinde log tutmak zorunlu kabul edilmelidir.
Root kullanıcısı ile cron tanımlamak güvenli midir?
Yalnızca gerçekten gerekli durumlarda tercih edilmelidir. En iyi yaklaşım, görevi ihtiyaç duyduğu minimum yetkilere sahip ayrı bir kullanıcı ile çalıştırmaktır. Böylece olası hata veya güvenlik açığının etkisi sınırlandırılır.
WordPress için gerçek cron kullanmak avantajlı mı?
Evet. Düşük trafikli sitelerde wp-cron gecikmeli çalışabileceği için gerçek cron kullanımı daha kararlı ve öngörülebilir bir zamanlama sağlar. Özellikle yedekleme, planlı yayın ve bakım görevlerinde bu fark belirgin hale gelir.
Sonuç
Cron, Linux sunucularda otomasyonun temel araçlarından biridir. Yedekleme, log temizliği, uygulama görevleri, raporlama ve bakım işlemleri gibi pek çok kritik süreci düzenli ve güvenilir biçimde yürütmeyi sağlar. Ancak başarılı bir cron yönetimi için doğru sözdizimi, uygun zamanlama, güvenlik önlemleri ve izleme mekanizmaları birlikte ele alınmalıdır.
Eğer projeniz büyüyor, daha fazla zamanlanmış görev çalıştırıyor veya daha kararlı bir altyapıya ihtiyaç duyuyorsa; Sanal Sunucu, Kiralık Sunucu ve Hizmetler çözümleri ile ihtiyaçlarınıza uygun altyapıyı planlayabilirsiniz. Doğru sunucu ve doğru otomasyon yaklaşımı, hem operasyonel verimliliği artırır hem de sistem sürekliliğini güçlendirir.
Yazar
Boran BAR