跳到主要内容
不要错过新客户专属 20% 折扣优惠! 优惠码: KAVESNET20 已复制
Linux

Cron Job Nedir, Nasıl Kurulur? Linux Zamanlanmış Görev Rehberi

Linux'ta cron job ile yedek alma, log temizleme, script çalıştırma. Crontab syntax, örnekler ve sık yapılan hatalar.

KavesNET Ekibi 2026年1月15日 3 分钟阅读
Cron job zamanlanmış görev görseli

Sunucuda her gece otomatik yedek almak, haftalık log temizlemek ya da 5 dakikada bir health check yapmak istiyorsan cron Linux’un standart aracıdır. Bu rehberde crontab syntax’ını, pratik örnekleri ve sık yapılan hataları anlatıyoruz.

Cron nedir?

Cron, Linux’ta belirli zamanlarda komut çalıştıran bir daemon. Her dakika crontab dosyasını okur, çalışma zamanı gelen komutları tetikler.

Crontab syntax

Bir cron satırı 5 zaman alanı + komut:

* * * * * komut
│ │ │ │ │
│ │ │ │ └── Haftanın günü (0-7, 0 ve 7 = Pazar)
│ │ │ └──── Ay (1-12)
│ │ └────── Ayın günü (1-31)
│ └──────── Saat (0-23)
└────────── Dakika (0-59)

Pratik örnekler

İfadeAnlamı
* * * * *Her dakika
*/5 * * * *Her 5 dakikada
0 * * * *Her saat başı
0 3 * * *Her gün gece 03:00
0 3 * * 1Her Pazartesi 03:00
0 3 1 * *Her ayın 1’i 03:00
30 2 * * 1-5Hafta içi 02:30
@rebootSunucu açılışında
@dailyHer gün 00:00
@weeklyHer hafta Pazar 00:00

Karmaşık ifadeleri test etmek için: crontab.guru

Crontab nasıl düzenlenir?

crontab -e        # Mevcut kullanıcı için düzenle
sudo crontab -e   # Root için
crontab -l        # Mevcut cron'ları listele
crontab -r        # TÜM cron'ları sil (dikkat!)

İlk açışta editör seçmen istenir — nano (kolay) ya da vim.

Pratik örnekler

Günlük yedek

# Her gece 03:00'te WordPress yedek
0 3 * * * /usr/local/bin/backup-wp.sh >> /var/log/backup.log 2>&1

>> /var/log/backup.log 2>&1 çıktıyı log’a kaydet, hataları da dahil et.

Saatlik log temizleme

0 * * * * find /var/log/myapp -name "*.log" -mtime +30 -delete

30 günden eski log’ları sil.

Her 5 dakikada health check

*/5 * * * * curl -s -o /dev/null -w "%{http_code}" https://siten.com >> /var/log/health.log

Veritabanı yedeği

30 2 * * * mysqldump -u root -p'PAROLA' veritabani | gzip > /backup/db-$(date +\%Y\%m\%d).sql.gz

⚠️ Crontab’da % karakteri özel — \% ile kaçır.

Sertifika yenileme

0 4 * * * certbot renew --quiet && systemctl reload nginx

Detaylı SSL için Let’s Encrypt yazımıza bak.

Cron çalıştığını nasıl doğrularsın?

# Cron servisi çalışıyor mu?
sudo systemctl status cron

# Cron log'u
sudo tail -f /var/log/syslog | grep CRON
# veya
sudo tail -f /var/log/cron

Komutun çalıştığını test etmek için cron’u 1-2 dakika sonrasına ayarla, log dosyasını izle.

Sık yapılan hatalar

  • Cron çalışmadı: Komut yolunu mutlak path ile yaz (/usr/bin/php değil sadece php değil)
  • Environment değişkenleri yok: Cron minimal env ile çalışır → script başında PATH= tanımla
  • % kaçırmamak: date +%Y%m%d cron’da kırılır → \%
  • Çıktı görünmez: Mail ayarı yoksa STDOUT kaybolur → >> log 2>&1 ile dosyaya yaz
  • PHP/Node script timeout: CLI olarak çalışır, web timeout’undan etkilenmez ama uzun script’leri arkaplana al
  • TZ farkı: Sunucu UTC ise saat uyuşmaz → sudo timedatectl set-timezone Europe/Istanbul

systemd timer alternatif (modern)

systemd timer’lar cron’a göre daha modern, log entegrasyonu daha temiz:

/etc/systemd/system/backup.service:

[Unit]
Description=Daily backup

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-wp.sh

/etc/systemd/system/backup.timer:

[Unit]
Description=Daily backup timer

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target
sudo systemctl enable --now backup.timer
sudo systemctl list-timers

Sonuç

Cron, sunucu otomasyonun temelidir. 5 dakikada öğrenilir, her gün kullanılır. Yedek, temizlik, monitoring — hepsi cron ile.

İlgili: Sunucu Yedekleme · Linux Disk Genişletme

标签 Linux Cron Otomasyon Tutorial

相关 文章

您可能也喜欢这些。