Saat dilimi değişikliğinden sonra Cron işi patlamıyor


13

Yaygın hataların çoğunu ortadan kaldırmaya çalıştım,

  1. PATH'lerin cron için hazır olmasını sağlamak

  2. crontab dosyasının sonunda bir bitiş çizgisi var

  3. saat dilimi şu şekilde ayarlanır:

    cd /etc
    cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
    

Bash'da datekoşuyorum, anladım:

Tue Sep 17 15:14:30 SGT 2013

Cron'un aynı zamanı kullanıp kullanmadığını kontrol etmek için,

* * * * * date >> date.txt

date.txt dosyasında aynı tarih çıktısını veriyor.

Bu yürütmeye çalıştığım komut dosyası:

event.sh:

#!/usr/bin/env bash
echo data > /root/data.txt

Kullanarak crontab -e, aşağıdaki çizgi çalışır,

* * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1

15 * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1

Ancak, ben diğer bazı argümanlar denedim, o 2.50 de çalışmasını umuyor:

50 14 * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1

veya

50 14 * * * (cd /root ; ./event.sh >/tmp/debug.log 2>&1)

artık çalışmaz. Saat argümanımda bir sorun var gibi görünüyor. /tmp/debug.logDosyada da hiçbir şey bulunamadı .

ÇÖZÜM:

TZ'de değişiklik yaptıktan sonra cron servisini yeniden başlatmam gerektiği ortaya çıktı.


1
günlüklerde herhangi bir hata? yerine mutlak yolu ile deneyin memnun edebilir ~/event.shile denemede/home/username/event.sh
Rahul Patil

1
Ayrıca, gibi küçük değişiklik yapmak* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
Rahul Patil

1
Saat diliminin doğru ayarlandığını söylüyorsunuz, ancak bundan kesinlikle emin misiniz ? Gibi bir giriş eklemeyi deneyin ve beklenen süreyi gösterdiğini * * * * * dateonaylayın date. Not crontab içinden TZ ortam değişkeni kendisi Daemon cron tarafından kullanıldığı gibi saat dilimini etkilemez olabilir, ama o olacak ben bunu geçici dışında yorum önermek istiyorum size crontab TZ değişkenine eğer öyleyse, cron ile başlatılan süreçleri etkileyecek ve bunun yerine sistem saatinin saat dilimini (Linux'u tek önyükleme yapıyorsanız, ancak yerel saat olabilir , muhtemelen UTC) kullanarak saati ayarlama .
CVn

1
Konuyu kaçırıyorsun, @adsisco. Crontab'da olabilecek herhangi bir TZ yönergesini kaldırmanızı ve sonra tekrar denemenizi istiyorum. Yani localtime sadece ekran değil, sistem saatinin etkiler / etc /. Tarih, bize zaman dilimi cron zaman alanları ne istediğini görmek icar gelmez kendisi cin cron aynı TZ ile yürütmek yapacak ve ben şüphe onu cron'u etkiler. Bu testi yaparak , probleminizin hiçbir şekilde zaman dilimleriyle ilgili olmadığından emin olabiliriz (ki bu açıkça bana benziyor).
CVn

1
Aslında, ben sadece sistemi yeniden başlatarak düzeltti düşünüyorum ... bu TZ değişiklik yaptıktan sonra cron hizmetini yeniden başlatmak zorunda olabilir? @ MichaelKjörling. TEŞEKKÜRLER! beni olası saat dilimi sorunlarına yönlendirdiğim için.
adsisco

Yanıtlar:


7

Öncelikle, bir alanın yanlış değerlendirilmesine neden olan bir hataya çarpma ihtimaliniz son derece düşük görünüyor . Neler olup bittiğini ve cronun ne beklediğini yanlış anlama olasılığı daha yüksektir.

Bu durumda, sorunun büyük olasılıkla saat dilimi ile ilgili bir sorun olduğunu öğrendik. Bunun için:

  • * * * * * dateCrontab'a benzer bir giriş ekleyin
  • Herhangi bir TZ atamasını crontab'dan kaldırın (veya yorum yapın)

Bu date, davetlinin zaman dilimi ayarıyla, yani cron arka plan programı anlamına gelir . Çıktıya bakın; hangi saat dilimi cronunun dahili olarak kullanıldığını gösterecek ve bu nedenle hangi zaman diliminin hangi zaman dilimine gireceğini büyük olasılıkla gösterecektir. Crontab'da bir TZ atamanız varsa, TZ ortam değişkeni atamasının komutları çağırdı ancak cron'un kendisi başka bir saat dilimi kullanıyor . TZ ödevini yorumlayarak veya kaldırarak bu belirsizliği önlersiniz.

Ayrıca, sistem genel saat dilimi ayarlarında yapılan değişikliklerin (örn. / Etc / localtime dahil) neredeyse kesinlikle cron artalan sürecinin en azından yeniden başlatılmasını ve muhtemelen (mümkün olmasa da) tüm sistemin yeniden etkinleşmesi gerektiğini unutmayın. Crontab TZ atama düzenleme olmamalıdır dosya değiştirildiğini algılayıp otomatik olarak yeniden gerektiği gibi, cron cini yeniden yüklenmesine gerektirir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.