sunucuhataları
teknik çözüm merkezi
Ara Giriş Yap Üye Ol
🏠 Ana Sayfa 📚 Kurulum Rehberleri
Kategoriler
🌐 Web Sunucuları 🐧 İşletim Sistemleri 📦 Sanallaştırma & VPS 🖥️ Kontrol Panelleri 🔒 SSL & Güvenlik 📝 CMS & Uygulamalar 🗄️ Veritabanı 📧 Mail Sunucusu 🗨️ Forum ℹ️ Hakkımızda 📧 İletişim
Giriş Yap Üye Ol
Ana Sayfa İşletim Sistemleri Cron Job Nedir? Linux'ta Nasıl Kullanılır?
🐧 İşletim Sistemleri

Cron Job Nedir? Linux'ta Nasıl Kullanılır?

Cron job, Linux'ta zamanlanmış görevler oluşturmanızı sağlayan güçlü bir araçtır. Crontab sözdizimini ve pratik örnekleri bu rehberde öğrenin.

📅 5 Mayıs 2025 👁 11 görüntülenme ⏱ 5 dk okuma
𝕏 Paylaş
📋 İçindekiler göster/gizle

Cron Job Nedir?

Cron, Unix/Linux sistemlerinde belirli zaman aralıklarında otomatik olarak komut veya script çalıştırmaya yarayan bir zamanlayıcı daemon'udur. "Cron job" ise bu daemon üzerinde tanımlanan zamanlanmış bir görevdir. Web geliştirme ve sistem yönetimi dünyasında vazgeçilmez bir araçtır.

Cron ile yapabileceklerinizden bazı örnekler:

  • Her gece veritabanı yedeği alma
  • Her saatte log dosyalarını sıkıştırma
  • Periyodik SSL sertifikası yenileme (Certbot)
  • WordPress zamanlanmış görevleri (wp-cron)
  • Raporların e-posta ile gönderilmesi
  • Önbellek temizleme

Crontab Sözdizimi

Cron görevleri crontab (cron table) dosyasına yazılır. Her satır bir zamanlanmış görevi temsil eder:

┌─────────── dakika (0-59)
│ ┌─────────── saat (0-23)
│ │ ┌─────────── ay günü (1-31)
│ │ │ ┌─────────── ay (1-12)
│ │ │ │ ┌─────────── haftanın günü (0-7, 0 ve 7 Pazar)
│ │ │ │ │
* * * * * çalıştırılacak_komut

Özel karakterler:

  • * – Her değer (her dakika, her saat, her gün vb.)
  • */n – Her n'de bir (örnek: */5 = her 5 dakikada bir)
  • n,m – Belirli değerler (örnek: 9,18 = saat 9 ve 18)
  • n-m – Aralık (örnek: 1-5 = Pazartesi'den Cuma'ya)

Crontab Örnekleri

# Her gece saat 02:00'de veritabanı yedeği
0 2 * * * /usr/bin/mysqldump -u root mydb > /backup/db_$(date +\%Y\%m\%d).sql

# Her 5 dakikada bir script çalıştır
*/5 * * * * /home/user/scripts/check_service.sh

# Her Pazartesi saat 08:00'de rapor gönder
0 8 * * 1 /usr/bin/python3 /home/user/reports/weekly_report.py

# Her ayın 1'i saat 00:00'da log temizle
0 0 1 * * find /var/log -name "*.log" -mtime +30 -delete

# Her gün saat 03:30'da Certbot yenileme
30 3 * * * /usr/bin/certbot renew --quiet

# Her saat önce gelen yarım saatte çalış (0:30, 1:30, 2:30...)
30 * * * * /usr/bin/php /var/www/html/cron.php

# Hafta içi her gün saat 09:00-17:00 arası her saat
0 9-17 * * 1-5 /usr/bin/python3 /scripts/business_task.py

# Özel ifadeler
@reboot /home/user/startup_script.sh    # Sistem başlangıcında
@daily /usr/bin/backup.sh               # Her gün (0 0 * * *)
@weekly /usr/bin/weekly_cleanup.sh     # Her hafta (0 0 * * 0)
@monthly /usr/bin/monthly_report.sh   # Her ay (0 0 1 * *)

Crontab Dosyasını Düzenleme

# Mevcut kullanıcının crontab'ını düzenle
crontab -e

# Mevcut cron görevlerini listele
crontab -l

# Başka bir kullanıcının crontab'ını düzenle (root)
crontab -e -u www-data

# Tüm crontab'ı sil (dikkatli!)
crontab -r

İlk kez crontab -e çalıştırdığınızda editör seçmeniz istenir. Nano tercih edilmesi önerilir.

Sistem Düzeyinde Cron Dosyaları

# Sistem crontab dosyası (kullanıcı belirtilmeli)
/etc/crontab

# Cron dizinleri
/etc/cron.d/        # Servis bazında cron dosyaları
/etc/cron.daily/    # Her gün çalışır
/etc/cron.weekly/   # Her hafta çalışır
/etc/cron.monthly/  # Her ay çalışır
/etc/cron.hourly/   # Her saat çalışır
# /etc/crontab formatı (kullanıcı alanı eklidir)
# dakika saat gün ay hafta_günü KULLANICI KOMUT
0 2 * * * root /usr/bin/mysqldump -u root mydb > /backup/db.sql

Cron Çıktısı ve Loglama

# Cron loglarını görüntüle
sudo grep CRON /var/log/syslog
# veya
sudo journalctl -u cron

# Cron çıktısını dosyaya yönlendir
0 2 * * * /usr/bin/backup.sh >> /var/log/backup.log 2>&1

# Çıktıyı yoksay
0 2 * * * /usr/bin/backup.sh > /dev/null 2>&1

# Yalnızca hataları kaydet
0 2 * * * /usr/bin/backup.sh > /dev/null 2>>/var/log/backup_errors.log

Cron Hata Ayıklama

Yaygın Sorunlar

1. Script çalışmıyor: Tam dosya yolunu kullandığınızdan emin olun. Cron, sınırlı bir PATH ortamında çalışır.

# Yanlış:
*/5 * * * * backup.sh

# Doğru:
*/5 * * * * /home/user/scripts/backup.sh

2. İzin hatası: Script'in çalıştırma izni olduğundan emin olun:

chmod +x /home/user/scripts/backup.sh

3. Ortam değişkenleri: Crontab dosyasının başına ortam değişkenlerini ekleyin:

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO="admin@example.com"

0 2 * * * /usr/bin/backup.sh

Web Hosting Ortamında Cron

cPanel'de Cron Job Oluşturma

  1. cPanel → Advanced → Cron Jobs
  2. "Add New Cron Job" bölümünü açın
  3. Zaman ayarını yapın (dakika, saat, gün, ay, hafta günü)
  4. Komutu girin: php /home/kullanici/public_html/cron.php
  5. "Add New Cron Job" butonuna tıklayın

WordPress Cron (WP-Cron)

# wp-config.php'ye ekleyin (otomatik wp-cron'u devre dışı bırak)
define('DISABLE_WP_CRON', true);

# Sistem cron'una gerçek WP cron ekleyin
*/5 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
# veya WP-CLI ile:
*/5 * * * * cd /var/www/html && wp cron event run --due-now --allow-root > /dev/null 2>&1

Systemd Timer: Modern Alternatif

Systemd tabanlı sistemlerde cron yerine systemd timer kullanmak mümkündür:

# /etc/systemd/system/backup.service
[Unit]
Description=Daily Database Backup

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

# /etc/systemd/system/backup.timer
[Unit]
Description=Run backup daily at 2am

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

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

Özet

Cron job, Linux sistem yönetiminin temel araçlarından biridir. Doğru sözdizimini öğrendikten sonra, yedekleme, raporlama ve bakım gibi rutin görevleri tamamen otomatikleştirebilirsiniz. Script'lerde tam yol kullanmayı, çıktıyı loglamayı ve test için crontab -e yerine önce manuel çalıştırmayı alışkanlık haline getirin.

🤔 Bu kurulumda sorun mu yaşıyorsunuz?

Hata mesajınızı kopyalayıp foruma konu açın. Topluluğumuz size özel durumunuza göre yardımcı olacaktır.

🗨️ Foruma Katıl & Yardım Al

Yorumlar

Henüz yorum yok. İlk yorumu siz yapın!

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanır.