Crontab Örnekleri 50+ Pratik Cron İfadesi

ÖrneklerYayın: Güncellendi: 8 dk okumaHazırlayan: cronjob.com.tr Editörleri

Bu sayfada en sık kullanılan crontab örneklerini kategorilere ayırarak sunuyoruz. Her örneğin yanında Türkçe açıklama vardır; komut yollarını kendi sisteminize göre düzenleyip crontab -e ile ekleyebilirsiniz. Beş alanın anlamı için önce crontab sözdizimi rehberini okuyun; ifadeyi görsel olarak kurmak için cron expression generator kullanın.

Cron, satırı kaydettiğiniz kullanıcı bağlamında çalışır: PATH kısadır, ortam değişkenleri sınırlıdır, % özel anlam taşır. Bu yüzden örneklerde mutlak yollar (/usr/bin/php, /usr/bin/mysqldump) tercih edilmiştir. Çalışmayan satırlar için cron job çalışmıyor kontrol listesine bakın.

Not: Örnekleri önce terminalde aynı kullanıcıyla çalıştırın; sonra crontab'a ekleyin. Test için geçici olarak her dakika (* * * * *) kullanıp loga bakabilirsiniz.

Temel Zamanlama Örnekleri

Aşağıdaki ifadeler dakikalık ve saatlik aralıklar içindir. Site izleme, kuyruk tüketimi ve sağlık kontrolü gibi işlerde */N adımı yaygındır; yükü düşünerek aralığı seçin.

Her dakika

* * * * * /scripts/komut.sh

Her dakika çalışır. Genellikle test veya yüksek frekanslı kontroller için kullanılır; üretimde gereksiz yük oluşturabilir.

Her 5 dakikada bir

*/5 * * * * /scripts/komut.sh

Saatin 0, 5, 10, … dakikalarında çalışır. Kuyruk işleme, cache ısınma veya dış API yoklama için uygundur. İfadeyi özelleştirmek için cron expression generator sayfasını açın.

Her 10 / 15 / 30 dakikada bir

*/10 * * * * /scripts/komut.sh
*/15 * * * * /scripts/komut.sh
*/30 * * * * /scripts/komut.sh
0,30 * * * * /scripts/komut.sh

*/30 ile 0,30 pratikte aynı anlama gelir; ikincisi okunabilirlik için tercih edilebilir.

Her saat ve N saatte bir

0 * * * * /scripts/komut.sh
0 */2 * * * /scripts/komut.sh
0 */3 * * * /scripts/komut.sh
0 */6 * * * /scripts/komut.sh
0 */12 * * * /scripts/komut.sh
0 0,12 * * * /scripts/komut.sh

0 */6 00:00, 06:00, 12:00, 18:00'de tetiklenir. Belirli saatleri listelemek (0 0,12) bazen daha nettir.

Günlük Görev Örnekleri

Her gün gece yarısı ve sabah

0 0 * * * /scripts/komut.sh
0 6 * * * /scripts/komut.sh

Her gün saat 3

0 3 * * * /scripts/yedek.sh

Gece 03:00, birçok sunucuda yükün düşük olduğu saattir; yedekleme ve ağır bakım için sık seçilir. Saat diliminizin cron daemon ile aynı olduğundan emin olun. Bu ifadeyi görsel kurmak için cron expression generator kullanın.

Birden fazla saat / aralık

0 9,18 * * * /scripts/komut.sh
0 8-18 * * * /scripts/komut.sh

8-18 her saat başı 08:00–18:00 arasıdır (dahil). İş saati kontrollerinde hafta günü alanı ile birleştirilir.

Haftalık Görev Örnekleri

Haftanın günü alanı 0–7 aralığındadır (0 ve 7 çoğu sistemde Pazar). İsim yerine sayı kullanmak taşınabilirlik açısından daha güvenlidir. Haftalık planı doğrulamak için cron expression generator ile sonraki çalışma zamanlarını kontrol edin.

Pazartesi, Cuma, Pazar

0 9 * * 1 /scripts/haftalik-rapor.sh
0 17 * * 5 /scripts/haftalik-yedek.sh
0 0 * * 0 /scripts/haftalik-temizlik.sh

Hafta içi / hafta sonu

0 9 * * 1-5 /scripts/is-gunu-gorev.sh
0 10 * * 0,6 /scripts/hafta-sonu.sh
0 9 * * 1,3,5 /scripts/gorev.sh

1-5 Pazartesi–Cuma demektir. Rapor ve hatırlatma işlerinde e-posta/MTA'nın çalıştığını doğrulayın.

Aylık Görev Örnekleri

Ayın günü alanı 1–31'dir. "Ayın son günü" doğrudan desteklenmez; koşullu shell ile çözülür. Aylık ifadeleri cron expression generator ile de üretebilirsiniz.

Ayın 1'i, 15'i ve çeyrek başı

0 0 1 * * /scripts/aylik-rapor.sh
0 9 15 * * /scripts/ay-ortasi-kontrol.sh
0 0 1,15 * * /scripts/iki-haftalik.sh
0 0 1 1,4,7,10 * /scripts/ceyrek-rapor.sh

Ayın son günü

0 0 28-31 * * [ "$(date -d tomorrow +\%d)" = "01" ] && /scripts/ay-sonu.sh

Yalnızca yarının günü 01 ise çalışır; böylece 28–31 aralığındaki tek "gerçek" ay sonu seçilir. % işaretinin \% ile kaçırıldığına dikkat edin.

Yıllık ve @kısayollar

0 0 1 1 * /scripts/yillik-rapor.sh
@yearly /scripts/yillik-rapor.sh
0 9 1 7 * /scripts/yil-ortasi.sh
@reboot /home/scripts/servis-baslat.sh

@yearly, @monthly, @weekly, @daily, @hourly ve @reboot çoğu Linux crontab'ında çalışır. Kritik üretim işlerinde açık beş alanlı yazım tercih edilir.

Veritabanı ve Web Sunucu Örnekleri

Parolayı crontab satırına yazmak yerine .my.cnf, ortam dosyası veya secret manager kullanın. Detaylı yedek akışı için veritabanı yedekleme rehberine bakın.

0 2 * * * mysqldump -u root -p'SIFRE' veritabani | gzip > /yedekler/db-$(date +\%Y\%m\%d).sql.gz 2>&1
0 2 * * * pg_dump -U postgres veritabani | gzip > /yedekler/pg-$(date +\%Y\%m\%d).sql.gz
0 2 * * * mongodump --db veritabani --archive=/yedekler/mongo-$(date +\%Y\%m\%d).gz --gzip
0 4 * * * find /yedekler/ -name "*.gz" -type f -mtime +30 -delete
*/15 * * * * /usr/bin/php /var/www/html/wp-cron.php > /dev/null 2>&1
0 3 * * 1 /usr/bin/certbot renew --quiet && systemctl reload nginx

WordPress'te WP-Cron'u sistem cron'una taşımak, düşük trafikli sitelerde kaçan tetiklemeleri azaltır. SSL yenilemede reload, certbot renew sıfır çıkış kodu verdiğinde çalışır (&&); yenileme gerekmediğinde de bu kod döner.

Sistem, Güvenlik ve Uygulama Örnekleri

0 8 * * 1 df -h | mail -s "Haftalik Disk Raporu" admin@sirket.com
0 */2 * * * [ $(df / --output=pcent | tail -1 | tr -d ' \%') -gt 90 ] && echo "Disk doluluk uyarisi!" | mail -s "UYARI: Disk Dolu" admin@sirket.com
0 4 * * * find /tmp -type f -atime +7 -delete
*/10 * * * * /usr/bin/php /var/www/html/cron/kuyruk-isle.php > /dev/null 2>&1
* * * * * cd /var/www/laravel && /usr/bin/php artisan schedule:run >> /dev/null 2>&1
0 */6 * * * /usr/bin/python3 /home/scripts/veri-cek.py >> /var/log/veri-cek.log 2>&1
*/5 * * * * /usr/bin/flock -n /tmp/gorev.lock /scripts/uzun-gorev.sh
0 3 * * * /bin/bash -c 'sleep $((RANDOM \% 600)) && /scripts/yedek.sh'

flock -n önceki çalışma bitmeden yenisini başlatmaz (çıkış kodu sıfır olmayan "kilit alınamadı"). Bash'e özgü RANDOM % 600 ile 0–599 sn rastgele gecikme, çok sunuculu yedek fırtınasını yumuşatır; crontab'da yine \% gerekir.

Örnekteki veri-cek.py betiği web sayfalarından düzenli veri topluyorsa istek aralığı, robots.txt ve değişiklik algılamasını web scraping için cron kurulumu bölümündeki ölçütlerle planlayın. Yedek ve uygulama çıktılarının saklama süresini log arşivlerini temizleme ve logrotate yöntemleri ile tanımlayın; aksi halde başarılı görevler diski doldurabilir. Yeni satırlar yazarken alan ve operatörlerin özetlendiği crontab cheatsheet sayfası hızlı başvuru sağlar.

Çıktı yönetimi

0 3 * * * /scripts/yedek.sh > /dev/null 2>&1
0 3 * * * /scripts/yedek.sh >> /var/log/yedek.log 2>&1
0 3 * * * /scripts/yedek.sh > /dev/null 2>> /var/log/yedek-hata.log
MAILTO=admin@sirket.com
0 3 * * * /scripts/yedek.sh

Sessiz yönlendirme hataları gizler; en azından hata logu tutun. MAILTO="" ile cron postasını kapatabilirsiniz. Log konumları için cron job log rehberine bakın.

Hızlı Başvuru Tablosu

İfadeAçıklama
* * * * *Her dakika
*/5 * * * *Her 5 dakikada bir
*/15 * * * *Her 15 dakikada bir
0 * * * *Her saat başı
0 3 * * *Her gün saat 03:00
0 9 * * 1-5Hafta içi 09:00
0 0 * * 0Her Pazar gece yarısı
0 0 1 * *Her ayın 1'inde
@rebootSistem başlangıcında
@dailyHer gün (genelde gece yarısı)

Sık Hatalar ve Çözümleri

1. /bin/sh: 1: php: not found

Neden: Cron PATH'inde PHP yok.
Çözüm: /usr/bin/php gibi mutlak yol yazın (which php ile bulun).

2. Komut terminalde çalışıyor, crontab'da sessiz

Neden: Farklı kullanıcı, cwd, ortam veya çıktı /dev/null'a gidiyor.
Çözüm: Aynı kullanıcıyla test edin; >>/tmp/cron-test.log 2>&1 ekleyin; pwd ve ortamı loglayın.

3. date veya mysqldump satırı yarım kesiliyor

Neden: Crontab'da % özel karakter.
Çözüm: \%Y\%m\%d şeklinde kaçırın veya tarihi script içinde üretin.

4. Permission denied

Neden: Script execute bit'i yok veya hedef dizine yazma izni yok.
Çözüm: chmod +x; yedek dizin sahipliğini cron kullanıcısına verin.

5. Görev üst üste biniyor

Neden: Önceki çalışma bitmeden yeni tetik geliyor.
Çözüm: flock -n veya script içinde kilit dosyası kullanın.

cronjob.com.tr ile HTTP Tabanlı Alternatif

Sunucuya SSH ile crontab yazmak istemiyorsanız ve işiniz HTTPS uç noktasıysa cronjob.com.tr panelden zamanlama sunar. Ücretsiz; kayıtta kredi kartı istenmez. En kısa aralık 1 dakika; hazır aralık veya 5 alanlı cron ifadesi seçilebilir.

<?php
declare(strict_types=1);
$beklenen = getenv('CRON_SECRET') ?: '';
$gelen = $_SERVER['HTTP_X_CRON_TOKEN'] ?? '';
if ($beklenen === '' || !hash_equals($beklenen, $gelen)) {
    http_response_code(403);
    exit('forbidden');
}
http_response_code(200);
echo 'ok';

Panelde URL, metot, X-Cron-Token header'ı ve zamanlamayı girin. Başarı HTTP 200–399; TLS doğrulanır; localhost/özel IP'ye istek gitmez. Timeout aralığa göre (1 dk → 55 sn, cron ifadeli → 290 sn). Loglar 7 gün; ardışık hata eşiğinde e-posta bildirimi.

Sıkça Sorulan Sorular (SSS)

Bu örnekleri doğrudan kopyalayıp kullanabilir miyim?

Evet, script yollarını ve parametreleri kendi sisteminize göre değiştirdikten sonra doğrudan crontab'ınıza ekleyebilirsiniz. Komut yollarının sisteminizde doğru olduğundan emin olun.

Crontab örneğini test etmenin en kolay yolu nedir?

Önce komutu terminalde manuel olarak çalıştırın. Doğru çalıştığını doğruladıktan sonra crontab'a ekleyin. Test aşamasında * * * * * ile her dakika çalıştırıp logları kontrol edebilirsiniz.

Hangi örnek en çok kullanılıyor?

Günlük veritabanı yedekleme (0 2 * * *), her 15 dakikada bir kuyruk işleme (*/15 * * * *) ve haftalık log temizleme (0 0 * * 0) en yaygın kullanılan crontab örnekleridir.

% karakteri crontab'da neden kaçırılır?

Crontab satırında kaçışlanmamış % işareti komutu böler; ilk % işaretinden sonraki metin komuta stdin olarak gönderilir. date +%Y gibi ifadelerde % işaretini \% şeklinde yazın; aksi halde komut yarım kalır veya beklenmedik stdin alır.

@daily ile 0 0 * * * aynı mıdır?

Çoğu Vixie/cronie kurulumunda @daily gece yarısına denk gelir ve 0 0 * * * ile eşdeğerdir. Dağıtıma göre davranış değişebileceği için kritik işlerde açık beş alanlı ifadeyi tercih edin.

Sonuç

Örnekleri kendi yollarınıza uyarlayın, önce elle test edin, çıktıyı loglayın ve %/PATH tuzaklarına dikkat edin. İfade üretmek için generator'ı, sözdizimi için referans rehberini kullanın.

Hemen Ücretsiz Cron Job Oluşturun

cronjob.com.tr ile web üzerinden URL işlerinizi zamanlayın. Ücretsiz; kayıtta kredi kartı istenmez.

Ücretsiz Başla →

İlgili Rehberler