งาน Cron ทำงาน 1 ชั่วโมงโดยไม่เห็นด้วยกับเวลาของระบบ


9

ตัวอย่างของปัญหา:

* 9 * * * echo 9
* 10 * * * echo 10

ด้านบนจะส่งอีเมลถึงผู้ใช้ทุกนาที แต่คำตอบ "9" ทั้งหมดจะเกิดขึ้นเวลา 10:00 น. -> 10:59 น. ในขณะที่ข้อความ "10" จะเข้ามาในเวลา 11:00 น. -> 11:59 น. .

ใช้งานของ

* * * * * /bin/date ; /bin/date -u

ส่งคืนวันที่และเวลาที่คาดหวัง (ถูกต้อง) สิ่งนี้เป็นจริงสำหรับทั้ง UTC และเวลาท้องถิ่น (อเมริกา / เดนเวอร์) เปลี่ยนงานนี้เพื่อให้ทำงานทุก ๆ นาทีที่ชั่วโมงที่ระบุส่งผลให้ออฟเซ็ต (งานบอกให้ทำงานที่ 9 รันที่ 10 ฯลฯ ฯลฯ )

ดีบักปัจจุบันที่ฉันทำเสร็จแล้ว:

โอเคนั่นมันแปลก บางทีไฟล์เขตเวลาของฉันอาจจะเกิดความสับสน ให้ตรวจสอบว่า

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
Files /etc/localtime and /usr/share/zoneinfo/America/Denver are identical

ฉันได้ตรวจสอบนาฬิกาฮาร์ดแวร์เพื่อดูว่าสิ่งนี้ปิดหรือไม่เห็นด้วยกับการตั้งค่าท้องถิ่นของฉัน (เรียกใช้เป็นราก)

date ; hwclock
Wed Oct 26 10:50:13 MDT 2016
Wed 26 Oct 2016 10:50:14 AM MDT  -0.204171 seconds

ดูเหมือนว่าจะปิดในไม่ช้า แต่นั่นไม่ควรทำให้งาน cron ของฉันทำงานเต็มชั่วโมงนอกเวลาใช่มั้ย

ฉันยังมั่นใจในสิ่งต่อไปนี้:

  • เขตเวลาของฉันมีการเปลี่ยนแปลงเมื่อเร็ว ๆ นี้? ไม่
  • คุณลองแก้ไขเขตเวลาด้วยตนเองหรือไม่ ใช่
  • คุณรีเซ็ต cron หลังจากแก้ไขเขตเวลาหรือไม่ ใช่
  • ฉันแน่ใจหรือไม่ว่าบริการ cron เริ่มต้นใหม่หรือไม่ ใช่
  • ฉันได้เริ่มบริการ cron ใหม่หรือไม่ ใช่
  • คุณแน่ใจจริงๆหรือว่า cron เริ่มต้นใหม่? 100% มั่นใจว่า Cron ได้ถูกรีสตาร์ท

ข้อมูลอื่น ๆ ที่อาจเกี่ยวข้อง:

วิ่ง Debian

cat /etc/debian_version
8.6

เคอร์เนลปัจจุบัน

uname -a
Linux BigBox 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux

แก้ไขข้อบกพร่อง:

Ran 'hwclock --systohc' ไม่เปลี่ยนแปลงพฤติกรรม เรียกใช้คำสั่งนี้เพื่อตรวจสอบ

date;hwclock
Wed Oct 26 12:39:09 MDT 2016
Wed 26 Oct 2016 12:39:11 PM MDT  -0.875328 seconds

ฉันไม่สามารถเรียกใช้ 'cat / etc / sysconfig / clock' เนื่องจากไฟล์นี้ไม่มีอยู่ การรันคำสั่ง find ภายใต้ / etc / tree เพื่อค้นหา 'clock' ยืนยันว่าฉันไม่มีไฟล์ตามชื่อนั้น

ตรวจสอบเพื่อดูว่ามีอะไรที่ฉันรู้จักได้ตั้งค่าตัวแปร CRON_TZ ไม่ได้ตั้งค่าไว้ที่ระดับผู้ใช้หรือระดับราก cron มี echo พวกเขาออกให้ไม่มีผลลัพธ์


1
มีการCRON_TZตั้งค่า env var ไว้ทุกที่หรือไม่?
thrig

ลองhwclock --systohcเพียงเพื่อความสมบูรณ์และเพิ่มcat /etc/sysconfig/clockคำถาม?
สตีฟ

เพิ่มคำแนะนำทั้งสองไปยังข้อมูลของฉันเศร้าไม่ได้ให้คุณค่ามากนัก CRON_TZ ไม่ได้ถูกตั้งค่าภายใต้สภาพแวดล้อมใด ๆ ที่ฉันเห็นการซิงค์ hwclock ใหม่ให้ผลลัพธ์เหมือนเดิมก่อน (ตรวจสอบเพื่อดูว่ามันเปลี่ยนไปหรือไม่ไม่ได้) และฉันไม่มี '/ etc / sysconfig / clock ไฟล์ '
jmurrayufo

คำตอบ:


1

หนึ่งในสถานที่มากขึ้นในการดู: สคริปต์เริ่มต้นที่บูต (s) สำหรับหรือโรงเรียนเก่าระบบแฟ้มcron crontab /etc/crontabเป็นไปได้ว่าตัวแปรสภาพแวดล้อม TZ ได้รับการตั้งค่าในการพูด/etc/init.d/cronieหรือ/lib/systemd/system/crond.serviceฉันไม่แน่ใจว่าสิ่งที่ Debian ใช้สำหรับระบบ init

ฉันเห็นบางสิ่งเช่นนี้เมื่อฉันพยายามcrondทำสิ่งต่าง ๆ ทุกชั่วโมง:

0 */2 * * * /opt/dbms/rainstor/archiving/ama_term

crondเรียกใช้สคริปต์ในชั่วโมงเลขคี่ ฉันสงสัย แต่ไม่เคยพิสูจน์ตัวเองว่าต้องทำอย่างไรกับความสับสนเวลาออมแสง


/etc/init.d/cron กำลังคว้า/etc/timezoneไฟล์ TZ cat /etc/timezone= ดูเหมือนว่าไฟล์นั้นจะถูกต้อง (เรียกใช้การตรวจสอบเพื่อให้แน่ใจว่าเป็นสองเท่าของไฟล์ที่ควรเป็น) /lib/systemd/system/crond.service ดูเหมือนจะไม่ต้องการแก้ไขตัวแปร TZ ใด ๆ ฉันจะตรวจสอบข้อเสนอแนะ * / 2 เพื่อดูว่าฉันเห็นสิ่งเดียวกันหรือไม่
jmurrayufo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.