İçeriğe geç

Cron görevi çalışmıyor: nasıl çalıştırılır

Orta 20 dk Güncellendi:

Kısa cevap

Cron görevi genellikle crontab'deki yanlış sözdizimi, çalıştırma izninin olmaması, betiğe giden yanlış yol veya cron hizmetinin başlatılmamış olması nedeniyle çalışmaz. Günlükleri kontrol edin, betiği manuel olarak test edin ve mutlak yollar kullanın.

Sorun nasıl anlaşılır

  • Görev planlanan saatte başlamıyor
  • Beklenen çıktı veya dosya yok
  • Cron günlüğü boş veya hatalar gösteriyor
  • Betik manuel olarak çalışıyor ancak cron'dan çalışmıyor
  • Hata bildirim e-postaları gelmiyor

En yaygın nedenler

Cron hizmeti başlatılmamış

Cron arka plan programı etkin değilse hiçbir görev yürütülmez. Hizmet durumunu kontrol edin ve gerekirse başlatın.

Crontab'de yanlış sözdizimi

Zaman alanlarındaki bir hata veya son satırın eksik olması yürütmeyi engelleyebilir. Biçimi kontrol edin ve etkin görevleri görmek için `crontab -l` kullanın.

Çalıştırma izni yok

Betiğin çalıştırma izni olmalıdır (`chmod +x`). Ayrıca cron'u çalıştıran kullanıcının dosya sahibi olup olmadığını kontrol edin.

Yanlış yol veya ortam

Cron sınırlı bir ortam kullanır, bu nedenle göreli yollar ve değişkenler sorun olabilir. Mutlak yollar kullanın ve değişkenleri açıkça tanımlayın.

İzin veya sahiplik sorunları

Betiğin eriştiği dosyalar cron kullanıcısı tarafından okunabilir olmalıdır. Dosya ve dizinlerin izinlerini ve sahipliğini kontrol edin.

Adım adım çözüm

  1. 1

    Cron hizmetinin çalışıp çalışmadığını kontrol edin

    systemctl status cron (veya bazı dağıtımlarda systemctl status crond) komutunu çalıştırın. Hizmet etkin değilse sudo systemctl start cron ile başlatın ve sudo systemctl enable cron ile otomatik başlatmayı etkinleştirin.

  2. 2

    Etkin cron görevlerini gözden geçirin

    Geçerli kullanıcının görevlerini görmek için crontab -l komutunu çalıştırın. Sistem görevleri için /etc/crontab dosyasına ve /etc/cron.d/ dizinine bakın. Sözdizimi hatası olmadığından emin olun.

  3. 3

    Betiği manuel olarak test edin

    Betiği, cron'u çalıştıran aynı kullanıcıyla terminalden çalıştırın. Manuel olarak çalışmıyorsa sorun cron'da değil betiktedir. Hataları düzeltin ve yeniden test edin.

  4. 4

    Mutlak yollar kullanın

    Crontab'de betiğe ve yorumlayıcıya giden tam yolu belirtin, örn. /usr/bin/python3 /home/kullanici/betik.py. Aynı durum betiğin eriştiği dosyalar için de geçerlidir.

  5. 5

    Ortam değişkenlerini ayarlayın

    Crontab'in başına PATH=/usr/bin:/bin ve diğer gerekli değişkenleri ekleyin. Bunları betik içinde de tanımlayabilirsiniz. Etkileşimli oturumdaki değişkenlere güvenmekten kaçının.

  6. 6

    İzinleri ve sahipliği kontrol edin

    Betiğin çalıştırma izni olduğundan (chmod +x betik.sh) ve cron'u çalıştıran kullanıcının onu okuma ve çalıştırma hakkı olduğundan emin olun. Betiğin kullandığı dizinler ve dosyalar üzerindeki izinleri de kontrol edin.

  7. 7

    Cron günlüklerini gözden geçirin

    systemd-journald kullanan sistemlerde journalctl -u cron veya journalctl -u crond kullanın. Diğer sistemlerde /var/log/syslog veya /var/log/cron dosyasına bakın. Görevinizle ilgili hataları arayın.

  8. 8

    Çıktıyı geçici olarak bir dosyaya yönlendirin

    Standart çıktıyı ve hataları yakalamak için crontab'deki satırın sonuna >> /tmp/cron.log 2>&1 ekleyin. Ardından görev yürütüldükten sonra dosyayı inceleyin.

  9. 9

    Zamanın doğru olup olmadığını kontrol edin

    Sistem saatının doğru olduğundan emin olun (date). Saat dilimi yanlışsa cron yanlış zamanda çalışır. Saat dilimini ve saat eşitlemesini ayarlayın.

Hiçbiri yardımcı olmazsa

Yukarıdakilerin tümünü kontrol ettiyseniz ve görev hala yürütülmüyorsa cron'u hata ayıklama modunda çalıştırmayı deneyin. Vixie cron için hizmeti kısa süreliğine durdurun ve sudo cron -f -x proc (veya cron'unuz için uygun seçenek) ile manuel olarak başlatın; testten sonra hizmeti yeniden başlatın. Bu, görev işleme hakkında ayrıntılı bilgi gösterecektir. Ayrıca, kullanıcının cron kullanmasını engelleyebilecek /etc/cron.allow ve /etc/cron.deny dosyaları aracılığıyla kısıtlamalar olup olmadığını kontrol edin. Son olarak, daha iyi günlükleme ve yönetim sunan systemd timer gibi bir alternatifi düşünün.

Tekrarlanmaması için

  • Cron günlüklerini düzenli olarak kontrol edin
  • Mutlak yollar ve açık değişkenler kullanın
  • Betikleri cron'a eklemeden önce test edin
  • İzinleri sınırlayın ve dosya sahipliğini izleyin

Ne zaman uzmana başvurmalı

Nedeni bulamıyorsanız veya günlüklere ve sistem dosyalarına erişiminiz yoksa IT desteğine başvurun. Sorunu daha hızlı izole edebilir ve iş akışındaki kesintileri önleyebilirler.

BT altyapı bakımı · Sunucular, ağlar, yedekleme, güvenlik ve yardım masası

Sık sorulan sorular

Sözdizimi doğru olmasına rağmen cron görevim neden çalışmıyor?

En yaygın neden betiğin çalıştırma izninin olmaması veya yorumlayıcıya giden yolun yanlış olmasıdır. Betiğin manuel olarak çalıştırıldığında çalışıp çalışmadığını ve tüm yolların mutlak olup olmadığını kontrol edin.

Cron'un bildirdiği hataları nasıl görebilirim?

Crontab'e `>> /tmp/cron.log 2>&1` ekleyerek çıktıyı geçici olarak bir dosyaya yönlendirebilirsiniz. Ayrıca `/var/log/syslog` veya `journalctl -u cron` gibi sistem günlüklerini inceleyin.

Cron ile anacron aynı şey mi?

Hayır. Cron hassas zamanlama için tasarlanmıştır ancak bilgisayar kapalıysa kaçırılan görevleri çalıştırmaz. Anacron kaçırılan görevleri yürütmek için tasarlanmıştır ancak tam zamanı garanti etmez.

Paylaş
Çözüm bulamadınız mı?AI BT asistanı 7/24 hizmetinizde. Sorunu anlatın veya hatanın ekran görüntüsünü gönderin, durumunuza özel talimat alın.AI BT asistanına sorun