Cron, Linux ve Unix tabanlı işletim sistemlerinde belirli komutların, lerin veya uygulamaların önceden belirlenen zamanlarda otomatik olarak çalıştırılmasını sağlayan zamanlayıcı servisidir. Düzenli olarak tekrarlanan görevlerin manuel müdahale gerektirmeden çalıştırılması için kullanılan en yaygın yöntemlerden biridir.
Web sunucularında yedekleme işlemleri, e-posta gönderimleri, log temizliği, veritabanı optimizasyonu, SSL yenileme işlemleri ve uygulama görevleri gibi birçok işlem Cron sayesinde otomatik olarak gerçekleştirilebilir.
Cron Nedir?
Cron, belirli zaman aralıklarında çalıştırılacak görevleri yöneten sistem servisidir. Çalıştırılacak görevler ise Crontab (Cron Table) adı verilen yapı içerisinde tanımlanır. Her satır bir zamanlama kuralını ve çalıştırılacak komutu içerir.
Cron görevleri arka planda otomatik olarak çalışır. Görevlerin çalışması için kullanıcının oturum açmasına gerek yoktur.
Cron Nerelerde Kullanılır?
- Otomatik veritabanı yedekleme.
- WordPress Cron görevleri.
- Log dosyalarının temizlenmesi.
- Geçici dosyaların silinmesi.
- SSL sertifikalarının yenilenmesi.
- E-posta gönderim lerinin çalıştırılması.
- PHP, Python, Perl ve Shell lerinin otomatik çalıştırılması.
Tekrarlayan işlemleri manuel olarak çalıştırmak yerine Cron kullanmanız hem zaman kazandırır hem de işlemlerin düzenli olarak gerçekleştirilmesini sağlar.
Temel Crontab Komutları
Cron görevlerini yönetebilmek için en sık kullanılan crontab komutları aşağıda yer almaktadır.
Crontab Dosyasını Düzenleme
Kullanıcının Cron görevlerini düzenlemek için kullanılan editörü açar.
Cron Görevlerini Listeleme
Tanımlanmış tüm Cron görevlerini listeler.
Tüm Cron Görevlerini Silme
Kullanıcıya ait tüm Cron görevlerini kaldırır.
crontab -r komutu mevcut tüm Cron görevlerini siler. Komutu çalıştırmadan önce mevcut Cron kayıtlarınızı crontab -l komutu ile kontrol etmeniz önerilir.
Cron Görevi Nasıl Oluşturulur?
Bir Cron görevi oluşturmak için zamanlama bilgileri ile çalıştırılacak komut aynı satırda belirtilir. Her satır tek bir Cron görevini temsil eder.
Bu örnekteki beş yıldız (*) zamanlama alanlarını ifade eder. Tüm alanlarda yıldız kullanıldığında komut her dakika çalıştırılır.
Cron Zamanlama Alanları
Cron zamanlaması soldan sağa doğru beş farklı alandan oluşur.
| Alan | Değer Aralığı | Açıklama |
|---|---|---|
| Dakika | 0 - 59 | Görevin hangi dakikada çalışacağını belirler. |
| Saat | 0 - 23 | 24 saat formatında çalıştırılacak saati belirtir. |
| Ayın Günü | 1 - 31 | Ayın hangi gününde çalışacağını belirler. |
| Ay | 1 - 12 | Görevin hangi ayda çalışacağını belirtir. |
| Haftanın Günü | 0 - 7 | 0 veya 7 Pazar, 1 Pazartesi, 2 Salı ... 6 Cumartesi'dir. |
Cron Zamanlama Karakterleri
Cron görevlerinde yalnızca sayılar değil, bazı özel karakterler de kullanılabilir.
| Karakter | Anlamı | Örnek |
|---|---|---|
| * | Tüm değerler | Her dakika |
| , | Birden fazla değer | 1,15,30 |
| - | Belirli aralık | 09-18 |
| / | Belirli aralıklarla | */10 (Her 10 dakika) |
Cron zamanlamalarında birden fazla karakter birlikte kullanılabilir. Örneğin 0 9-18 * * 1-5 ifadesi, hafta içi her saat başında sabah 09:00 ile akşam 18:00 arasında görevin çalışmasını sağlar.
İlk Cron Görevinizi Oluşturma
Aşağıdaki örnek, backup.sh isimli bir Shell ini her gün saat 02:00'de çalıştırır.
Cron görevlerinde mümkün olduğunca komutların tam dosya yolunu (absolute path) kullanmanız önerilir. Böylece ortam değişkenlerinden kaynaklanabilecek çalıştırma sorunlarının önüne geçebilirsiniz.
Çalıştıracağınız veya dosyanın yürütme (execute) iznine sahip olduğundan emin olun. Aksi halde Cron görevi zamanında çalışsa bile komut başarıyla yürütülemeyebilir.
Sık Kullanılan Cron Görevi Örnekleri
Aşağıdaki örnekler, günlük sistem yönetiminde ve web hosting ortamlarında en sık kullanılan Cron görevlerini göstermektedir. İhtiyacınıza göre komutları düzenleyerek kendi Cron görevlerinizi oluşturabilirsiniz.
Her 10 Dakikada Bir Çalıştırma
Komut veya her 10 dakikada bir çalıştırılır.
Her Gün Saat 12:00 ve 18:00'de Çalıştırma
Görev her gün saat 12:00 ve 18:00'de çalıştırılır.
Her Saat Başı (09:00 - 18:00 Arası)
Görev her gün sabah 09:00 ile akşam 18:00 saatleri arasında her saat başında çalıştırılır.
Hafta İçi Her Saat Başı (09:00 - 18:00)
Görev yalnızca Pazartesi ile Cuma günleri arasında her saat başında çalıştırılır.
Gerçek Kullanım Örnekleri
PHP i Çalıştırma
Belirtilen PHP dosyasını her 30 dakikada bir çalıştırır.
Shell i Çalıştırma
Shell ini her gün saat 03:00'te çalıştırır.
Bir URL'yi Cron ile Çağırma
Belirtilen web adresini her 15 dakikada bir çağırır.
wget ile URL Çalıştırma
Web adresini her saat başında çalıştırır ve çıktıyı ekrana yazdırmaz.
curl ve wget komutlarının sonundaki >/dev/null 2>&1 ifadesi, Cron çıktılarının kaydedilmesini veya e-posta olarak gönderilmesini engelleyerek gereksiz sistem çıktılarının oluşmasını önler.
Web hosting hesaplarında mümkün olduğunca URL çağırmak yerine doğrudan PHP dosyasını php komutu ile çalıştırmanız daha hızlı ve daha verimlidir.
Cron görevlerini çok kısa aralıklarla (örneğin her dakika) çalıştırmadan önce, çalıştırılan uygulamanın tamamlanma süresini göz önünde bulundurun. Uzun süren görevlerin üst üste çalışması sunucu performansını olumsuz etkileyebilir.
Cron Görevleri Çalışmıyorsa Kontrol Edilmesi Gerekenler
Oluşturduğunuz Cron görevi beklenen zamanda çalışmıyorsa, aşağıdaki kontrolleri yaparak sorunun kaynağını tespit edebilirsiniz.
1. Komutun Manuel Olarak Çalıştığını Doğrulayın
Cron'a eklediğiniz komutu önce SSH üzerinden manuel olarak çalıştırın. Komut manuel çalışmıyorsa, Cron tarafından da çalıştırılamayacaktır.
2. Tam Dosya Yolunu Kullanın
Cron görevlerinde mümkün olduğunca komutların ve çalıştırılacak dosyaların tam (absolute) dosya yolunu kullanın.
3. Dosya İzinlerini Kontrol Edin
Çalıştırılacak in okunabilir ve gerekiyorsa çalıştırılabilir izinlere sahip olduğundan emin olun. Özellikle Shell leri için yürütme (execute) izni verilmelidir.
4. PHP Sürümünü Kontrol Edin
Birden fazla PHP sürümünün bulunduğu sunucularda doğru PHP yorumlayıcısının kullanıldığından emin olun. Gerekirse PHP'nin tam yolunu kullanın.
5. Çıktıları ve Hataları Kaydedin
Sorun giderme sırasında Cron çıktısını bir günlük dosyasına yönlendirmek, oluşan hataları tespit etmenizi kolaylaştırır.
Bu örnekte oluşan standart çıktılar ve hata mesajları cron.log dosyasına kaydedilir.
Cron görevleri, normal kullanıcı oturumundan farklı bir ortamda çalışır. Bu nedenle ortam değişkenlerine bağlı komutlar beklenildiği gibi çalışmayabilir. Tam dosya yollarının kullanılması tavsiye edilir.
Sık Sorulan Sorular
Cron görevim neden çalışmıyor?
En yaygın nedenler; hatalı zamanlama, yanlış dosya yolu, eksik dosya izinleri, yanlış PHP yolu veya çalıştırılan te oluşan hatalardır.
Birden fazla Cron görevi oluşturabilir miyim?
Evet. Crontab dosyasına her satır için farklı bir görev ekleyerek istediğiniz kadar Cron görevi tanımlayabilirsiniz.
Her dakika çalışan Cron görevi oluşturabilir miyim?
Evet. Ancak yoğun kaynak kullanan uygulamalarda her dakika çalışan görevler sunucu performansını olumsuz etkileyebilir. Bu nedenle ihtiyaç duyulan en uygun zaman aralığının tercih edilmesi önerilir.
Aynı görevin, önceki çalışması tamamlanmadan yeniden başlaması sunucu yükünün artmasına ve beklenmeyen sonuçlara neden olabilir. Özellikle yedekleme, veri senkronizasyonu ve toplu işlem yapan lerde çalışma sürelerini dikkate alarak zamanlama yapmanız önerilir.
Silme, taşıma veya veritabanı güncelleme işlemleri yapan Cron görevlerini canlı ortamda kullanmadan önce mutlaka test ortamında doğrulayın. Yanlış yapılandırılmış bir Cron görevi geri dönüşü zor veri kayıplarına neden olabilir.
Sonuç
Cron, Linux tabanlı sistemlerde tekrarlayan işlemleri otomatik hale getirmenin en güvenilir yöntemlerinden biridir. Doğru yapılandırılmış Cron görevleri sayesinde yedekleme, bakım, raporlama ve uygulama işlemleri düzenli olarak gerçekleştirilebilir. Zamanlama kurallarının doğru belirlenmesi, tam dosya yollarının kullanılması ve görevlerin düzenli olarak kontrol edilmesi, sorunsuz bir Cron yapısı oluşturmanın temelini oluşturur.
İSİMKAYIT Yardım Merkezi
Bu makalede Linux ve Unix tabanlı sistemlerde Cron görevlerinin oluşturulması, zamanlama kuralları, sık kullanılan örnekler ve olası sorunların çözüm yöntemleri ayrıntılı olarak açıklanmıştır. Hosting yönetimi, Linux sunucu yönetimi ve otomasyon işlemleri hakkında daha fazla bilgi için İSİMKAYIT Yardım Merkezi'ndeki diğer teknik makaleleri inceleyebilirsiniz.
Bu makale yardımcı olmadı mı? Destek ekibimizle iletişime geçin veya 0850 290 3344 numaralı hattı arayın.