Bu yazı, cron job mantığını hiç bilmeyen biri için hazırlanmıştır. Cron’un ne işe yaradığını, nasıl çalıştığını, nasıl yazıldığını ve günlük sistem yönetiminde nasıl güvenli kullanılacağını sade ama doğru şekilde anlatan bir başlangıç rehberidir.
1. Cron Job Nedir? #
Cron, Linux/Unix sistemlerde belirli komutları veya scriptleri belirli zamanlarda otomatik çalıştıran zamanlayıcı sistemidir.
Bir cron job’u şöyle düşünebilirsin:
“Şu komutu her gün saat 03:00’te çalıştır.”
“Bu scripti her pazartesi sabahı çalıştır.”
“Her 5 dakikada bir sistem durumunu kontrol et.”
Yani cron, bilgisayara veya sunucuya verilen otomatik görev talimatıdır.
2. Cron Nerelerde Kullanılır? #
Cron job genellikle tekrar eden sistem işleri için kullanılır:
- Her gece veritabanı yedeği almak
- Log dosyalarını temizlemek
- SSL sertifika yenileme kontrolleri yapmak
- Disk doluluk kontrolü yapmak
- Rapor üretmek ve e-posta göndermek
- Eski dosyaları silmek
Örneğin bir sunucuda her gece saat 02:00’de yedek almak istiyorsan, bunu elle yapmak yerine cron’a yaptırırsın.
3. Cron Satır Yapısı #
Bir cron job satırı şu yapıdadır:
* * * * * çalıştırılacak_komut

İlk bakışta karmaşık görünebilir, ama aslında 5 adet zaman alanı vardır:
| Alan | Anlamı | Değer Aralığı |
|---|---|---|
| 1 | Dakika | 0-59 |
| 2 | Saat | 0-23 |
| 3 | Ayın günü | 1-31 |
| 4 | Ay | 1-12 |
| 5 | Haftanın günü | 0-7 (Pazar = 0 veya 7) |
Örnek:
30 2 * * * /home/user/backup.sh
Bu şu anlama gelir: Her gün saat 02:30’da /home/user/backup.sh scriptini çalıştır.
4. Cron Nerede Tanımlanır? #
Kullanıcı bazlı cron job’ları düzenlemek için:
crontab -e
Mevcut cron job’ları görüntülemek için:
crontab -l
Tüm cron job’ları silmek için:
crontab -r
⚠️ Dikkat:
crontab -rtüm cron kayıtlarını siler. Geri alma yoktur.
5. Yıldız * Ne Anlama Gelir?
#
Cron’da * işareti “her değer” anlamına gelir.
* * * * * echo "Merhaba"
Bu satır her dakika çalışır — çünkü tüm zaman alanları yıldızdır (her dakika, her saat, her gün, her ay, haftanın her günü).
6. Temel Cron Örnekleri #
Her dakika çalıştır #
* * * * * /home/user/script.sh
Her 5 dakikada bir çalıştır #
*/5 * * * * /home/user/script.sh
Her saat başı çalıştır #
0 * * * * /home/user/script.sh
Her gün gece 02:00’de çalıştır #
0 2 * * * /home/user/backup.sh
Her pazartesi saat 09:00’da çalıştır #
0 9 * * 1 /home/user/weekly-report.sh
Hafta içi her gün 09:00’da çalıştır #
0 9 * * 1-5 /scripts/workday.sh
Her ayın 1. günü 00:00’da çalıştır #
0 0 1 * * /home/user/monthly-job.sh
7. Virgül, Tire ve Bölü İşareti Kullanımı #
| Karakter | Anlamı | Örnek |
|---|---|---|
* |
Her değer | Her dakika, her saat |
, |
Birden fazla değer | 1,3,5 |
- |
Aralık | 1-5 |
/ |
Belirli aralıklarla | */10 |
# Pazartesi, Çarşamba, Cuma — saat 09:00
0 9 * * 1,3,5 /scripts/job.sh
# Hafta içi her gün — saat 09:00
0 9 * * 1-5 /scripts/job.sh
# Her 15 dakikada bir
*/15 * * * * /scripts/job.sh
8. Özel Cron Kısaltmaları #
| Kısaltma | Anlamı |
|---|---|
@reboot |
Sistem açıldığında çalışır |
@yearly / @annually |
Yılda bir çalışır |
@monthly |
Ayda bir çalışır |
@weekly |
Haftada bir çalışır |
@daily / @midnight |
Günde bir çalışır |
@hourly |
Saatte bir çalışır |
@reboot /home/user/startup.sh
9. Cron ile Script Çalıştırma #
Önce scriptin çalıştırılabilir olduğundan emin ol:
chmod +x /home/user/backup.sh
Sonra cron’a ekle:
crontab -e
Dosyanın en altına şunu yaz:
0 2 * * * /home/user/backup.sh
Shebang Kullanımı #
Bir bash scriptinin başına mutlaka şu satırı ekle:
#!/bin/bash
Bu satır işletim sistemine “bu dosyayı bash ile çalıştır” der.
10. Mutlak Dosya Yolu ve PATH Problemi #
Cron, terminaldeki kullanıcı ortamınla birebir aynı ortamda çalışmaz. Bu yüzden her zaman mutlak yol kullan:
# 🚫 Kötü
0 2 * * * backup.sh
0 2 * * * python3 /home/user/script.py
# ✅ İyi
0 2 * * * /home/user/backup.sh
0 2 * * * /usr/bin/python3 /home/user/script.py
Bir komutun tam yolunu bulmak için:
which python3
# → /usr/bin/python3
11. Log Dosyasına Çıktı Almak #
Cron job’lar arka planda çalışır. Çıktıları loglamak için:
0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
| İfade | Anlamı |
|---|---|
>> |
Dosyanın sonuna ekle |
2>&1 |
Hata çıktısını da log’a yaz |
> |
Dosyayı her seferinde sıfırla |
12. Cron Job Çalışıyor mu Nasıl Anlaşılır? #
# Cron servis durumu (Debian/Ubuntu)
systemctl status cron
# Kayıtlı cron job'ları listele
crontab -l
# Sistem logları (Debian/Ubuntu)
grep CRON /var/log/syslog
# RHEL/CentOS/AlmaLinux
grep CRON /var/log/cron
# Systemd
journalctl -u cron
13. Kullanıcı Cron’u ve Root Cron’u Farkı #
# Kullanıcı cron'u (o kullanıcı yetkisiyle çalışır)
crontab -e
# Root cron'u (root yetkisiyle çalışır — dikkatli kullan)
sudo crontab -e
/etc/crontab dosyasında kullanıcı alanı da vardır:
# /etc/crontab formatı
0 2 * * * root /home/user/backup.sh
Kullanıcı crontab’ına kullanıcı adı yazılmaz. Bu fark önemlidir.
14. Pratik Örnek: Her Gece Yedek Alma #
#!/bin/bash
DATE=$(date +%Y-%m-%d_%H-%M-%S)
SOURCE="/var/www/html"
DEST="/home/user/backups"
mkdir -p "$DEST"
tar -czf "$DEST/website_backup_$DATE.tar.gz" "$SOURCE"
echo "Backup completed at $DATE"
Cron kaydı:
0 2 * * * /home/user/backup.sh >> /home/user/backup.log 2>&1
15. Pratik Örnek: Eski Dosyaları Silme #
# 30 günden eski .tar.gz dosyalarını sil
0 3 * * * find /home/user/backups -type f -name "*.tar.gz" -mtime +30 -delete >> /home/user/cleanup.log 2>&1
⚠️
-deletekomutunu önce-deleteolmadan test et:find /home/user/backups -type f -name "*.tar.gz" -mtime +30
16. Çakışan İşlere Dikkat: flock
#
Uzun süren bir iş her 5 dakikada bir çalışıyorsa, önceki bitmeden yenisi başlayabilir. Bunu flock ile engelle:
*/5 * * * * flock -n /tmp/myjob.lock /home/user/myjob.sh >> /home/user/myjob.log 2>&1
Önceki iş hâlâ çalışıyorsa yeni iş başlamaz.
17. Cron Cheat Sheet #

| İhtiyaç | Cron İfadesi |
|---|---|
| Her dakika | * * * * * |
| Her 5 dakikada bir | */5 * * * * |
| Her 15 dakikada bir | */15 * * * * |
| Her saat başı | 0 * * * * |
| Her gün 02:00 | 0 2 * * * |
| Her gün 08:30 | 30 8 * * * |
| Her pazartesi 09:00 | 0 9 * * 1 |
| Hafta içi 09:00 | 0 9 * * 1-5 |
| Her ayın 1’i 00:00 | 0 0 1 * * |
| Her yıl 1 Ocak 00:00 | 0 0 1 1 * |
| Sistem açıldığında | @reboot |
18. Sık Yapılan Hatalar #
| Hata | Yanlış | Doğru |
|---|---|---|
| Çalıştırma izni yok | chmod verilmemiş |
chmod +x /path/script.sh |
| Göreli yol | backup.sh |
/home/user/backup.sh |
| PATH problemi | python3 app.py |
/usr/bin/python3 /home/user/app.py |
| Log yazmamak | çıktı kaybolur | >> /var/log/job.log 2>&1 |
| Script içinde göreli yol | cp data.txt backup/ |
cp /home/user/data.txt /home/user/backup/ |
19. Cron Job Yazarken Kontrol Listesi #
Bir cron job eklemeden önce şunları kontrol et:
- Komut terminalde elle çalışıyor mu?
- Script çalıştırılabilir mi? (
chmod +xverildi mi?) - Dosya yolları mutlak mı?
- Kullanıcı yetkisi doğru mu?
- Log dosyasına çıktı yazıyor mu?
- Hata çıktısı da loglanıyor mu? (
2>&1) - İş çok sık çalışıp sistemi yoruyor mu?
- Önceki çalışma bitmeden yenisi başlar mı?
- Silme/değiştirme yapan komutlar test edildi mi?
- Cron satırına açıklama eklendi mi?
20. Güvenli Cron Job Şablonu #
# Açıklama: Her gece web dizinini yedekler
# Zaman: Her gün 02:00
0 2 * * * /home/user/backup.sh >> /home/user/logs/backup.log 2>&1
Açıklama eklemek birkaç ay sonra “bu ne yapıyordu?” sorusunu önler.
21. Hızlı Başlangıç #
Script oluştur:
nano /home/user/hello-cron.sh
İçine yaz:
#!/bin/bash
echo "Cron çalıştı: $(date)" >> /home/user/hello-cron.log
Çalıştırma izni ver ve cron’a ekle:
chmod +x /home/user/hello-cron.sh
crontab -e
# en alta yaz:
* * * * * /home/user/hello-cron.sh
Bir dakika sonra kontrol et:
cat /home/user/hello-cron.log
Cron çalıştı: Mon Jun 29 12:00:01 +03 2026
Cron çalıştı: Mon Jun 29 12:01:01 +03 2026
Bu çıktıyı görüyorsan ilk cron job’un başarıyla çalışıyor demektir. 🎉
Özet #
Cron job, Linux sistemlerde tekrar eden işleri otomatikleştirmek için kullanılır. En temel yapı:
# dakika saat ayınGünü ay haftanınGünü komut
* * * * * komut
Başlangıçta öğrenmen gereken en önemli şeyler:
- Cron zaman formatını okumak
- Mutlak dosya yolu kullanmak
- Scriptlere çalıştırma izni vermek
- Log çıktısı almak
- Cron servis ve sistem loglarını kontrol etmek
- Root cron’u ile kullanıcı cron’u farkını bilmek
Cron basit görünür ama güçlüdür — özellikle silme, taşıma, yedekleme ve root yetkisi gerektiren işlerde dikkatli kullan.