Cron Nedir? Linux Sunucularda Zamanlanmış Görev Yönetimi Rehberi
Cron Nedir? Linux Sunucularda Zamanlanmış Görev Yönetimi Rehberi
Son Güncelleme: Ağustos 2026
Cron, Linux ve Unix-benzeri sistemlerde komutları, betikleri (script) ya da bakım işlemlerini belirli aralıklarla otomatik olarak çalıştırmak için kullanılan zamanlanmış görev yöneticisidir. Doğru kurgulandığında sunucu yönetimi, yedekleme, log temizliği, SSL yenileme ve uygulama bakım süreçlerinde büyük kolaylık sağlar.
Bu rehberde cron mantığını, crontab yapısını, örnek kullanım senaryolarını, güvenli planlama yöntemlerini ve hatalı zamanlamaları nasıl önleyeceğinizi adım adım ele alacağız. Ayrıca Corelux altyapısında zamanlanmış işlerin sunucu performansını nasıl daha kontrollü hale getirebileceğine de değineceğiz.
İçindekiler
- Cron Nedir?
- Crontab Yapısı Nasıl Çalışır?
- Cron Zaman İfadesi Mantığı
- Pratik Kullanım Senaryoları
- Güvenlik, Hata Yönetimi ve En İyi Uygulamalar
- Cron mu, systemd timer mı?
- Sıkça Sorulan Sorular
- Sonuç
Cron Nedir?
Cron, arka planda çalışan ve önceden tanımlanmış komutları belirli saatlerde, günlerde veya periyotlarda çalıştıran bir zamanlayıcıdır. En temel amacı, tekrar eden işleri manuel müdahaleye gerek kalmadan otomatikleştirmektir.
Örneğin her gece veritabanı yedeği almak, her saat logları temizlemek, haftalık rapor üretmek veya belirli bir uygulama betiğini çalıştırmak için cron kullanılabilir. Bu sayede hem operasyonel yük azalır hem de kritik işlemler düzenli bir biçimde tamamlanır.
Neden önemlidir?
Cron, özellikle hosting, VPS, VDS ve özel sunucu ortamlarında zaman yönetimini standartlaştırır. İnsan hatasını azaltır, düzenli bakım sağlar ve iş sürekliliğini destekler.
Bir web uygulamasında çalışan görevlerin çoğu, kullanıcı tarafından görülmese de altyapının sağlıklı kalması için kritiktir. Yedekleme, önbellek temizleme, e-posta kuyruk işleme ve güvenlik taramaları gibi süreçler cron ile otomatikleştirildiğinde yönetim çok daha sürdürülebilir olur.
Crontab Yapısı Nasıl Çalışır?
Crontab, kullanıcıya ait cron görevlerinin listelendiği yapılandırma dosyasıdır. Her kullanıcının ayrı bir crontab dosyası olabilir ve görevler bu dosya üzerinden yönetilir.
Crontab girdileri genellikle altı bölümden oluşur: dakika, saat, ayın günü, ay, haftanın günü ve çalıştırılacak komut. Bu yapı sayesinde görevler çok hassas biçimde zamanlanabilir.
* * * * * /path/to/command
Yukarıdaki örnekte beş yıldız işareti, görevin her dakika çalışacağını ifade eder. Komut kısmında ise çalıştırılacak betik veya program yolu yer alır.
Crontab dosyasını düzenleme
Kullanıcıya ait cron görevlerini düzenlemek için genellikle crontab -e komutu kullanılır. Mevcut görevleri görmek için crontab -l, görevleri silmek için ise crontab -r komutu tercih edilir.
crontab -e
crontab -l
crontab -r
Sunucu tarafında sistem genelinde tanımlı görevler ayrıca /etc/crontab veya /etc/cron.d/ altında da yönetilebilir. Bu yaklaşım, sistem yöneticilerinin merkezi planlama yapmasına yardımcı olur.
Cron Zaman İfadesi Mantığı
Cron zaman ifadesi, bir görevin ne zaman çalışacağını tanımlayan kurallar bütünüdür. Alanları doğru anlamak, görevlerin beklenmedik zamanlarda çalışmasını önlemek için çok önemlidir.
| Alan | Açıklama | Örnek |
|---|---|---|
| Dakika | 0-59 arası dakika değeri | 0 |
| Saat | 0-23 arası saat değeri | 2 |
| Ayın günü | Ay içindeki gün | 1 |
| Ay | 1-12 arası ay değeri | 12 |
| Haftanın günü | 0-7 arası gün değeri | 1 |
Bu alanlar birlikte değerlendirildiğinde görev planı netleşir. Örneğin her gün saat 02:00’de çalışan bir yedekleme işi için zaman ifadesi 0 2 * * * şeklinde yazılır.
Yaygın örnekler
- Her dakika:
* * * * * - Her gün saat 03:30:
30 3 * * * - Her pazartesi saat 01:00:
0 1 * * 1 - Her ayın 1’inde saat 00:15:
15 0 1 * * - Her 10 dakikada bir:
*/10 * * * *
Burada dikkat edilmesi gereken nokta, zaman ifadelerinin sistem saat dilimine göre çalışmasıdır. Sunucunuzun saat dilimi yanlışsa cron görevleri doğru zamanda çalışsa bile kullanıcı açısından hatalı görünebilir.
Pratik Kullanım Senaryoları
Cron, yalnızca basit komutları değil, uygulama odaklı iş akışlarını da otomatikleştirmek için kullanılır. Aşağıdaki örnekler gerçek sunucu yönetimi senaryolarında en sık karşılaşılan ihtiyaçlara karşılık gelir.
1. Otomatik yedekleme
Veritabanı ve dosya yedekleri, sistem güvenliği ve felaket kurtarma planları için kritik öneme sahiptir. Her gece çalışan bir cron görevi, yedekleme sürecini standartlaştırır ve unutulma riskini ortadan kaldırır.
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Bu örnekte yedekleme betiği her gece saat 02:00’de çalışır ve çıktı günlük dosyasına yönlendirilir.
2. Log temizliği
Sunucu logları zamanla büyüyerek disk kullanımını artırabilir. Düzenli log temizliği veya döndürme işlemleri, disk alanının kontrol altında tutulmasına yardımcı olur.
0 4 * * 0 /usr/local/bin/clean-logs.sh
Bu görev haftada bir çalıştırılarak biriken geçici kayıtları düzenli biçimde işleyebilir.
3. Web uygulaması bakım işleri
Framework tabanlı uygulamalarda cache temizleme, kuyruk işleme veya veri senkronizasyonu gibi işlemler cron ile otomatik hale getirilebilir. Özellikle Laravel ve benzeri yapıların zamanlanmış görev sistemleri cron ile entegre çalışır.
*/5 * * * * /usr/bin/php /var/www/app/artisan schedule:run >> /dev/null 2>&1
Bu modelde uygulama içi görevler her beş dakikada bir kontrol edilir ve çalışması gereken işler tetiklenir.
4. SSL yenileme sonrası servis yeniden yükleme
SSL sertifikası yenilendikten sonra web sunucusunun yeniden yüklenmesi gerekebilir. Bu işlemi cron ile bağlamak, sertifika otomasyonunu daha güvenilir hale getirir.
0 5 1 * * /usr/local/bin/renew-ssl.sh && systemctl reload nginx
Buradaki yaklaşım, sertifika yenileme ve servis yenileme adımlarını tek bir zincirde birleştirir.
5. E-posta veya kuyruk işleme
Mesaj kuyruğu, bildirim veya e-posta sistemlerinde bekleyen işlerin düzenli işlenmesi gerekebilir. Cron, yoğunluğu dağıtmak ve işlerin birikmesini önlemek için kullanılabilir.
Güvenlik, Hata Yönetimi ve En İyi Uygulamalar
Cron görevleri basit görünse de yanlış yapılandırıldığında güvenlik, performans ve veri bütünlüğü sorunlarına neden olabilir. Bu yüzden görevleri planlarken yalnızca çalışması değil, nasıl çalıştığı da düşünülmelidir.
Komutları tam yol ile yazın
Cron ortamı, kullanıcı kabuğuna (shell) göre daha sınırlı bir çevre değişkeni setiyle çalışabilir. Bu nedenle komutların ve betiklerin tam yolu verilmelidir.
/usr/bin/php /var/www/app/artisan schedule:run
Eksik yol kullanımı, özellikle PATH değişkeni tanımlı olmayan ortamlarda görev başarısızlığına yol açabilir.
Çıktıları mutlaka kaydedin
Hataların teşhis edilebilmesi için cron görevlerinin standard output ve error çıktıları kayıt altına alınmalıdır. Aksi halde görev sessizce başarısız olabilir.
/usr/local/bin/task.sh >> /var/log/task.log 2>&1
Bu yöntem, sorunları sonradan inceleyebilmeniz için temel bir iz bırakır.
Eşzamanlı çalışmayı kontrol edin
Bir görevin bir sonraki çalışması önceki işlem bitmeden başlarsa kaynak çakışması yaşanabilir. Özellikle veri tabanı yedekleri, dosya işleme veya senkronizasyon görevlerinde kilitleme (lock) mantığı kullanılmalıdır.
Gerektiğinde flock benzeri mekanizmalar ile aynı işin üst üste binmesi önlenebilir. Bu yaklaşım, performansı korur ve veri bozulması riskini azaltır.
Yetkiyi sınırlayın
Cron görevlerini mümkün olan en düşük yetkiyle çalıştırmak önemlidir. Her görev için root kullanmak yerine, yalnızca ilgili uygulama kullanıcısının yetkileri tercih edilmelidir.
Bu prensip, saldırı yüzeyini daraltır ve bir betik ele geçirilse bile sistemin tamamının etkilenmesini zorlaştırır.
Zaman dilimini netleştirin
Sunucular farklı lokasyonlarda barındırılabilir. Bu nedenle sistem saat dilimini açık biçimde belirlemek, cron görevlerinin beklenen zamanda çalışmasını sağlar. Türkiye, Almanya veya Fransa lokasyonlu sunucularda zamanlama planı yapılırken bu detay özellikle önemlidir.
Cron mu, systemd timer mı?
Geleneksel olarak cron, zamanlanmış görevlerin standart çözümü olmuştur. Ancak modern Linux dağıtımlarında systemd timer yapısı da güçlü bir alternatif olarak kullanılır.
| Kriter | Cron | systemd timer |
|---|---|---|
| Kurulum kolaylığı | Çok basit | Orta düzey |
| Taşınabilirlik | Yüksek | Systemd bağımlı |
| Loglama | Manuel yönlendirme gerekir | Daha merkezi |
| Esneklik | Basit planlar için ideal | Servis tabanlı işlerde güçlü |
Cron, hızlı ve anlaşılır olması nedeniyle hâlâ yaygın şekilde tercih edilir. systemd timer ise servis bağımlılıkları, yeniden başlatma politikaları ve sistemle daha sıkı entegrasyon gereken durumlarda avantaj sağlar. Hangi yapının seçileceği, işin karmaşıklığına ve sunucu mimarisine bağlıdır.
Sonuç
Cron, Linux sunucularda otomasyonun temel taşlarından biridir. Doğru planlandığında yedekleme, log yönetimi, SSL yenileme, uygulama bakımı ve düzenli bakım görevlerini güvenilir bir şekilde yürütmenizi sağlar.
Başarılı bir cron yönetimi için zaman ifadelerini dikkatle yazmak, çıktıları loglamak, yetkileri sınırlamak ve görev çakışmalarını önlemek gerekir. Eğer bu işleri daha stabil bir altyapıda yürütmek istiyorsanız Corelux Sanal Sunucu, Kiralık Sunucu, SSL Sertifikası ve Yedekleme Hizmeti çözümleri, zamanlanmış işleri daha güvenli ve ölçeklenebilir biçimde yönetmenize yardımcı olabilir.
Özetle, cron basit bir zamanlayıcıdan fazlasıdır; düzenli çalışan bir altyapının görünmeyen ama en kritik parçalarından biridir. İyi kurgulanmış görev planlarıyla sunucunuzun kontrolünü daha profesyonel bir seviyeye taşıyabilirsiniz.
Sıkça Sorulan Sorular
Cron her Linux dağıtımında aynı şekilde mi çalışır?
Temel mantık aynıdır, ancak paket adı, servis yönetimi ve loglama detayları dağıtıma göre değişebilir. Debian, Ubuntu, CentOS ve türevlerinde yapı benzerdir.
Cron ile hangi tür işler otomatikleştirilebilir?
Yedekleme, log temizliği, cache yenileme, veritabanı bakım işleri, rapor üretimi, betik çalıştırma ve periyodik sistem kontrolleri otomatikleştirilebilir.
Cron görevim çalışıyor mu nasıl kontrol ederim?
Önce crontab kaydını crontab -l ile doğrulayın. Ardından komutun çıktısını log dosyasına yönlendirin ve ilgili uygulama loglarını inceleyin.
Root yerine normal kullanıcı ile cron kullanmak güvenli mi?
Evet, hatta çoğu durumda daha güvenlidir. Görevi yalnızca gerekli izinlere sahip kullanıcıyla çalıştırmak, sistem genelinde riskleri azaltır.
Cron neden bazen beklediğim saatte çalışmaz?
En sık nedenler saat dilimi uyuşmazlığı, yanlış zaman ifadesi, betik yolu hatası, izin problemi veya ortam değişkenlerinin eksik olmasıdır.
Bir görev uzun sürerse ne olur?
Görev yeni tetiklenme zamanı geldiğinde önceki işlem bitmemiş olabilir. Bu durumda çakışma yaşanır; kilitleme mekanizması veya zamanlama optimizasyonu gerekir.
Sıkça Sorulan Sorular
Yazar
Boran BAR