Ana Sayfa/Blog/Cron İfadeleri Rehberi: Zamanlanmış Görevler

Cron İfadeleri Rehberi: Zamanlanmış Görevler

Cron, Unix/Linux sistemlerinde belirli zamanlarda otomatik olarak komut veya script çalıştırmak için kullanılan bir zamanlayıcı servisidir. Yedekleme, log temizleme, rapor oluşturma, veritabanı bakımı gibi tekrarlayan görevleri otomatikleştirmek için vazgeçilmez bir araçtır.

Cron İfadesi Söz Dizimi

Bir cron ifadesi 5 alandan oluşur ve her alan zamanın farklı bir birimini temsil eder:

┌───────────── dakika (0-59)
│ ┌───────────── saat (0-23)
│ │ ┌───────────── ayın günü (1-31)
│ │ │ ┌───────────── ay (1-12)
│ │ │ │ ┌───────────── haftanın günü (0-7, 0 ve 7 = Pazar)
│ │ │ │ │
* * * * * komut

Özel Karakterler

Yaygın Cron Kalıpları

# Her dakika
* * * * *

# Her saat başı
0 * * * *

# Her gün gece yarısı
0 0 * * *

# Her gün sabah 9'da
0 9 * * *

# Her Pazartesi sabah 8'de
0 8 * * 1

# Her ayın 1'inde gece yarısı
0 0 1 * *

# Her 15 dakikada bir
*/15 * * * *

# Hafta içi her gün sabah 6'da
0 6 * * 1-5

# Her 6 saatte bir
0 */6 * * *

# Her yılın 1 Ocak'ında gece yarısı
0 0 1 1 *

# Hafta sonları saat 10'da
0 10 * * 6,0

# Ayın 1'i ve 15'inde saat 12'de
0 12 1,15 * *

Crontab Komutları

crontab, kullanıcı bazlı cron görevlerini yönetmek için kullanılan komuttur:

# Mevcut cron görevlerini listele
crontab -l

# Cron görevlerini düzenle
crontab -e

# Tüm cron görevlerini sil (dikkatli kullanın!)
crontab -r

# Başka bir kullanıcının cron görevlerini görüntüle (root gerekir)
crontab -u kullanici -l

# Dosyadan cron görevlerini yükle
crontab dosya.txt

Crontab Dosya Formatı

# Ortam değişkenleri
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[email protected]

# Görevler
0 2 * * * /home/fatih/backup.sh
*/5 * * * * /usr/bin/php /var/www/cron.php
0 9 * * 1 /home/fatih/rapor.sh >> /var/log/rapor.log 2>&1

Çıktı Yönetimi

Cron görevlerinin çıktısını yönetmek önemlidir, aksi halde her çalışmada sistem maili gönderilir:

# Çıktıyı dosyaya yönlendir
0 2 * * * /backup.sh >> /var/log/backup.log 2>&1

# Hem stdout hem stderr'i ayrı dosyalara
0 2 * * * /backup.sh > /var/log/backup.log 2> /var/log/backup-error.log

# Çıktıyı tamamen bastır
0 2 * * * /backup.sh > /dev/null 2>&1

2>&1 ifadesi standart hata çıktısını (stderr) standart çıktıya (stdout) yönlendirir.

Özel Zaman İfadeleri

Bazı cron uygulamaları okunabilirliği artıran kısayollar destekler:

@reboot    → Sistem başlangıcında bir kez
@yearly    → Yılda bir (0 0 1 1 *)
@monthly   → Ayda bir (0 0 1 * *)
@weekly    → Haftada bir (0 0 * * 0)
@daily     → Günde bir (0 0 * * *)
@hourly    → Saatte bir (0 * * * *)

Hata Ayıklama İpuçları

Güvenlik Uyarıları

Cron ifadelerini kolayca oluşturmak ve anlamak için SiteScripti'nin Cron Oluşturucu ve Cron Açıklayıcı araçlarını kullanabilirsiniz.

Bu konuyla ilgili araçlarımızı da deneyin: Teknoloji Dedektörü, Docker Compose Oluşturucu, ENV Generator

← Tüm Yazılar