Anacron Nedir? Kaçan Görevleri Telafi Eden Zamanlayıcı

Temel KavramlarYayın: Güncellendi: 7 dk okumaHazırlayan: cronjob.com.tr Editörleri

Anacron, sürekli açık kalmayan makinelerde zamanlanmış görevlerin kaçmamasını sağlayan bir görev zamanlayıcısıdır. Resmi man sayfasına göre (anacron(8)) frekans gün cinsinden verilir; makinenin 7/24 ayakta olduğu varsayılmaz. Bu yüzden dizüstü, masaüstü ve düzenli kapatılan ofis bilgisayarlarında günlük/haftalık bakımı güvenilir kılar.

Cron görevi tam belirlenen dakikada çalıştırır — o an makine kapalıysa görev sessizce atlanır. Anacron ise her görev için son çalışma tarihine bakar; aradan geçen gün sayısı periyoda ulaştıysa anacron tetiklendiğinde yapılandırılmış gecikmeden sonra görevi telafi ederek çalıştırır. Dakika hassasiyeti veya kullanıcı crontab'ı istiyorsanız Linux cron job rehberine bakın; servis bağımlılığı ve Persistent=true için cron vs systemd timer karşılaştırması uygundur.

Bu rehber anacrontab sözdizimini, kurulum adımlarını, cron.daily ile ilişkisini, gerçek senaryoları ve sık hata mesajlarını kapsar. Resmi yapılandırma referansı: anacrontab(5).

Cron vs Anacron: Temel Farklar

ÖzellikCronAnacron
Zaman hassasiyetiDakikaGün
Makine kapalıyken kaçan görevAtlanırAçılışta telafi edilir
Minimum periyot1 dakika1 gün
Kullanıcı bazlı görevVar (crontab -e)Özel yapılandırma ve yazılabilir spool diziniyle mümkün (-t, -S)
Tipik kullanım7/24 sunucularDizüstü / masaüstü, günlük bakım
Yapılandırma dosyasıcrontab, /etc/cron.d//etc/anacrontab
Zaman damgasıYok (saat dilimine bağlı tetik)/var/spool/anacron/

Anacron Nasıl Çalışır?

Anacron her görev için /var/spool/anacron/ altında bir zaman damgası dosyası tutar. Çalıştığında her görevin son çalışma tarihine (saat hariç) bakar:

  1. Son çalışmadan bu yana geçen gün sayısı, görevin periyodundan büyük veya eşitse görev kuyruğa alınır.
  2. Belirtilen gecikme süresi (delay) kadar bekler — açılışta tüm görevlerin aynı anda başlayıp sistemi yormasını önler. RANDOM_DELAY tanımlıysa bu gecikmeye 0–N dakika rastgele eklenir.
  3. Görev tamamlanınca zaman damgası güncellenir. Çıktı varsa MAILTO adresine (veya anacron'un çalıştığı kullanıcıya) postalanır; bilgilendirme mesajları syslog'a cron facility ile gider.

Aktif görevler kilitlenir; aynı anda başka bir anacron örneği aynı işi yeniden başlatmaz. -s ile işler sırayla, -n ile gecikme yok sayılarak (ve seri olarak) çalıştırılır.

/etc/anacrontab Sözdizimi

# /etc/anacrontab formatı:
# periyot(gün)  gecikme(dk)  görev-kimliği     komut

1       5   gunluk-yedek      /opt/scripts/gunluk-yedek.sh
7      10   haftalik-rapor    /opt/scripts/haftalik-rapor.sh
@monthly 15 aylik-temizlik    /opt/scripts/aylik-temizlik.sh

Faydalı ortam değişkenleri (Cronie anacron)

# Cronie anacron: /etc/anacrontab başında tanımlanabilir:
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=ops@sirket.com
RANDOM_DELAY=45
START_HOURS_RANGE=3-22

RANDOM_DELAY=45 her görevin gecikmesine 0–45 dakika rastgele ekler. START_HOURS_RANGE=3-22 görevlerin yalnızca 03:00–22:00 arasında başlamasına izin verir; pencere kaçırılırsa o gün iş çalışmaz. Değerlerde VAR=VALUE biçiminde boşluk olmamalıdır.

Kurulum ve Test (Adım Adım)

  1. Paketi kurun (Debian/Ubuntu: sudo apt install anacron; CentOS/Rocky: sudo dnf install cronie-anacron).
  2. /etc/anacrontab dosyasını düzenleyin; periyot, gecikme, benzersiz kimlik ve mutlak komut yolu yazın.
  3. Sözdizimini doğrulayın: sudo anacron -T (geçerliyse çıkış kodu 0).
  4. Test için gecikmeyi yok sayarak zorla çalıştırın: sudo anacron -f -n.
  5. Zaman damgasını kontrol edin: ls -la /var/spool/anacron/ ve ilgili kimlik dosyasının içeriği.
  6. Çıktı/posta için MAILTO ayarlayın; syslog'da cron satırlarını izleyin.
# Debian / Ubuntu
sudo apt install anacron

# CentOS / Rocky Linux
sudo dnf install cronie-anacron

# Sözdizimi testi (görevleri çalıştırmadan kontrol eder)
sudo anacron -T

# Görevleri hemen zorla çalıştır (test için; -n gecikmeyi yok sayar ve -s ima eder)
sudo anacron -f -n

# Yalnızca zaman damgalarını bugüne çek, komut çalıştırma
sudo anacron -u

cron.daily İlişkisi

Modern dağıtımlarda /etc/cron.daily/, /etc/cron.weekly/ ve /etc/cron.monthly/ dizinlerindeki görevler çoğunlukla anacron üzerinden yürütülür. /etc/crontab içindeki satırlar önce anacron'un kurulu olup olmadığını kontrol eder; kuruluysa görevleri anacron devralır. Böylece gece 03:00'te kapalı olan bir dizüstü, sabah açıldığında günlük bakım görevlerini (log rotasyonu, paket veritabanı güncellemesi vb.) telafi eder.

# /etc/crontab içindeki tipik satır:
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Anacron yoksa run-parts doğrudan çalışır; varsa anacron zaman damgasına göre karar verir. Bu model, crontab ile sistem bakımını birleştirir.

Gerçek Senaryolar

Senaryo 1: Dizüstünde günlük proje yedeği

Geliştirici makinesi gece kapanıyor; 0 2 * * * cron satırı çoğu gün kaçıyor. /etc/anacrontab içine 1 10 proje-yedek /home/kullanici/scripts/yedek.sh ekleyin. Sabah açılışta anacron 10 dakika (+ varsa RANDOM_DELAY) bekleyip yedeği alır. Script içinde mutlak yollar kullanın; çıktıyı log dosyasına yazın.

Senaryo 2: Ofis PC'de haftalık paket ve log bakımı

Haftada bir çalışan temizlik için periyot 7, gecikme 15, kimlik haftalik-bakim yeterlidir. START_HOURS_RANGE=8-18 ile işlerin mesai saatlerinde başlamasını sağlayabilirsiniz — ancak pencere kaçırılırsa o gün çalışmaz; gece çalışan ofis makinesi için aralığı geniş tutun veya kaldırın.

Sık Hatalar ve Çözümleri

1. Invalid syntax in /etc/anacrontab on line veya -T başarısız

Neden: Eksik alan, geçersiz periyot/gecikme veya görev kimliğinde eğik çizgi.
Çözüm: Kimliği tek kelime yapın (gunluk-yedek); sudo anacron -T ile doğrulayın.

2. Görev hiç çalışmıyor, zaman damgası eski

Neden: START_HOURS_RANGE dışında açılış; veya anacron hiç tetiklenmiyor.
Çözüm: Aralığı genişletin veya geçici kaldırın; sudo anacron -f -d ile ön planda izleyin; syslog'u kontrol edin.

3. /bin/sh: 1: /opt/scripts/yedek.sh: not found

Neden: Yanlış yol, eksik execute izni veya CR/LF satır sonu.
Çözüm: ls -l ve chmod +x; script'i root olarak elle çalıştırın; shebang satırını doğrulayın.

4. Çıktı e-postası gelmiyor / spam kutusu

Neden: Yerel MTA yok, posta teslimi başarısız veya komut çıktı üretmiyor.
Çözüm: MAILTO ayarlayın veya komutta >>/var/log/... yönlendirmesi kullanın; cron log pratiklerini uygulayın.

5. Eski kimlik dosyaları birikiyor

Neden: Anacron zaman damgası dosyalarını otomatik silmez (man sayfasındaki bilinen davranış).
Çözüm: Kaldırılan görevlerin /var/spool/anacron/ altındaki dosyalarını elle silin.

cronjob.com.tr ile HTTP Tabanlı Alternatif

Anacron yerel makinede çalışır; bilgisayar kapalıyken veya özel ağdayken dışarıdan tetiklenemez. İşiniz genel internetteki bir HTTPS uç noktasıysa (rapor API'si, bakım URL'si) cronjob.com.tr bilgisayarınız kapalıyken de erişilebilir durumdaki bu uç noktaya planlanan isteği gönderir. Ücretsizdir; kayıtta kredi kartı istenmez. En kısa aralık 1 dakikadır — anacron'un gün tabanlı modelinden farklıdır.

<?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');
}
// buraya yedek / rapor tetikleme
http_response_code(200);
echo 'ok';

Panelde URL, metot (GET/POST vb.), X-Cron-Token header'ı ve zamanlamayı (hazır aralık veya 5 alanlı cron ifadesi) girin. Başarı ölçütü HTTP 200–399; timeout aralığa göre (1 dk → 55 sn, cron ifadeli işler → 290 sn). TLS doğrulanır; localhost ve özel IP'lere istek gönderilmez. Loglar 7 gün tutulur; ardışık hata eşiğinde e-posta bildirimi gelir.

Ne Zaman Cron, Ne Zaman Anacron?

Sıkça Sorulan Sorular (SSS)

Anacron cron'un yerini alır mı?

Hayır, ikisi birbirini tamamlar. Cron dakika hassasiyetinde zamanlama sunar ama makine kapalıyken kaçan görevleri telafi etmez. Anacron ise gün hassasiyetinde çalışır ve makine açıldığında kaçan görevleri çalıştırır. Modern dağıtımlarda cron.daily/weekly/monthly görevleri genellikle anacron üzerinden yürütülür.

Anacron saatlik görev çalıştırabilir mi?

Hayır. Anacron'un en küçük periyodu 1 gündür. Saatlik veya dakikalık görevler için cron, systemd timer veya cronjob.com.tr gibi web tabanlı bir zamanlayıcı kullanmalısınız.

Sunucumda anacron'a ihtiyacım var mı?

7/24 çalışan sunucularda anacron'un telafi özelliği nadiren gerekir; cron yeterlidir. Anacron esas olarak dizüstü ve masaüstü gibi düzenli kapatılan makineler için tasarlanmıştır.

START_HOURS_RANGE kaçırılırsa ne olur?

Cronie anacrontab man sayfasına göre, görev START_HOURS_RANGE penceresi dışında kalırsa o gün çalıştırılmaz. Örneğin aralık 6-8 iken makine saat 10'da açılırsa günlük iş o gün atlanır; bir sonraki uygun güne kalır.

Zaman damgası dosyalarını silmeli miyim?

Anacron zaman damgası dosyalarını otomatik silmez. Görevi anacrontab'dan kaldırdıysanız /var/spool/anacron/ altındaki ilgili kimlik dosyasını elle silin; aksi halde artık kullanılmayan dosyalar birikir.

Sonuç

Anacron, "makinem kapalıyken görevlerim kaçmasın" sorununun gün hassasiyetli çözümüdür: periyot, gecikme, zaman damgası ve isteğe bağlı rastgele gecikme. Dakika hassasiyeti gereken işlerde cron ile birlikte kullanın; ikisinin görev alanı farklıdır, rakip değildirler.

Makineniz Kapalıyken de Çalışan Cron Job'lar

cronjob.com.tr, bilgisayarınız kapalı olsa bile internetten erişilebilir durumdaki HTTPS uç noktalarınızı zamanlamaya göre çağırır. Ücretsiz; kayıtta kredi kartı istenmez.

Ücretsiz Başla →

İlgili Rehberler