งาน Cron ไม่ทำงานหลังจากการเปลี่ยนเขตเวลา


13

ฉันพยายามกำจัดข้อผิดพลาดทั่วไปจำนวนมาก

  1. ตรวจสอบให้แน่ใจว่า PATH พร้อมใช้งานสำหรับ cron

  2. มี endline ที่ท้ายไฟล์ crontab

  3. เขตเวลาถูกตั้งค่าโดย:

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

ทำงานdateในทุบตีฉันได้รับ:

Tue Sep 17 15:14:30 SGT 2013

เพื่อตรวจสอบว่า cron ใช้พร้อมกันหรือไม่

* * * * * date >> date.txt

ให้ผลลัพธ์วันที่เดียวกันใน date.txt

นี่คือสคริปต์ที่ฉันพยายามเรียกใช้:

event.sh:

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

การใช้crontab -eบรรทัดด้านล่างใช้งานได้

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

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

อย่างไรก็ตามเมื่อฉันลองโต้แย้งอื่น ๆ หวังว่ามันจะทำงานเวลา 14.00 น.:

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

หรือ

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

มันจะไม่ทำงานอีกต่อไป ดูเหมือนว่ามีปัญหากับการโต้แย้งชั่วโมงของฉัน ไม่พบสิ่ง/tmp/debug.logใดในไฟล์เช่นกัน

วิธีการแก้:

มันกลับกลายเป็นว่าฉันต้องรีสตาร์ทบริการ cron หลังจากทำการเปลี่ยนแปลง TZ


1
ข้อผิดพลาดใด ๆ ในบันทึก? คุณกรุณาลองด้วยเส้นทางที่แน่นอนแทนที่จะ~/event.shลองด้วย/home/username/event.sh
Rahul Patil

1
ยังทำการเปลี่ยนแปลงเล็กน้อยเช่น* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
Rahul Patil

1
คุณบอกว่าโซนเวลาถูกตั้งค่าอย่างถูกต้อง แต่คุณแน่ใจหรือไม่? ลองเพิ่มรายการที่ชอบ* * * * * dateและยืนยันว่าdateแสดงเวลาที่คาดหวัง โปรดทราบว่าการตั้งค่าตัวแปรสภาพแวดล้อม TZ จากภายใน crontab อาจไม่ส่งผลกระทบต่อเขตเวลาตามที่ cron daemon ใช้ แต่จะส่งผลต่อกระบวนการที่เปิดใช้ผ่าน cron ดังนั้นหากคุณตั้งค่า TZ ใน crontab ของคุณฉันขอแนะนำให้แสดงความคิดเห็นชั่วคราว และการตั้งค่าเวลาโดยใช้เขตเวลาของนาฬิการะบบ (อาจเป็น UTC หากคุณใช้ระบบบูทเดี่ยว แต่อาจเป็นเวลาท้องถิ่น)
CVn

1
คุณไม่ได้รับคะแนน @adsisco ฉันขอให้คุณลบคำสั่ง TZ ใด ๆ ที่อาจอยู่ใน crontab แล้วลองอีกครั้ง ซึ่งจะทำให้วันที่เรียกใช้งานด้วย TZ เดียวกับ cron daemon ทำให้เราเห็นว่าเขตเวลา cron ต้องการเขตเวลาใน / etc / localtime มีผลกับการแสดงไม่ใช่นาฬิการะบบและฉันสงสัยว่ามันมีผลต่อ cron ด้วยการทำแบบทดสอบนี้เราสามารถมั่นใจได้ว่าปัญหาของคุณจะไม่เกี่ยวข้องกับเขตเวลา (ซึ่งตรงไปตรงมากับฉัน)
CVn

1
จริง ๆ แล้วฉันคิดว่าฉันเพิ่งแก้ไขโดยการรีบูตระบบ ... เป็นไปได้ไหมว่าฉันต้องรีสตาร์ทบริการ cron หลังจากทำการเปลี่ยนแปลง TZ? @ MichaelKjörling ขอขอบคุณ! สำหรับชี้ให้ฉันเห็นปัญหาเขตเวลาที่เป็นไปได้
adsisco

คำตอบ:


7

ออกก่อนการต่อรองที่คุณจะตีข้อผิดพลาดที่ทำให้เกิดเขตข้อมูลหนึ่งที่จะได้รับการพิจารณาอย่างไม่ถูกต้องดูเหมือนล้ำต่ำ มีแนวโน้มที่จะเกิดความเข้าใจผิดว่าเกิดอะไรขึ้นและ cron คาดหวังอะไร

ในกรณีนี้เราพบความคิดเห็นในคำถามว่าอาจเป็นปัญหาที่เกี่ยวข้องกับเขตเวลา สำหรับสิ่งนี้คุณจะ:

  • เพิ่มรายการที่ต้องการ* * * * * dateลงใน crontab
  • ลบ (หรือแสดงความคิดเห็น) การมอบหมาย TZ ใด ๆ จาก crontab

กองกำลังนี้dateในการทำงานด้วยการตั้งค่าเขตเวลาของคนทรงที่ซึ่งหมายความว่าภูต cron ดูผลลัพธ์ มันจะแสดงให้เห็นว่าเขตเวลาใดที่ cron ใช้ภายในและมีแนวโน้มสูงว่าเขตเวลาใดที่มันต้องการเขตเวลาของมันหากคุณมีการมอบหมาย TZ ใน crontab มันเป็นไปได้อย่างง่ายดายที่การกำหนดตัวแปรสภาพแวดล้อม TZ จะถูกส่งผ่านไปยัง คำสั่งเรียกแต่ cron ตัวเองใช้โซนเวลาอื่น โดยการแสดงความคิดเห็นหรือลบการมอบหมาย TZ คุณหลีกเลี่ยงความกำกวมนี้

นอกจากนี้โปรดทราบว่าการเปลี่ยนแปลงใด ๆ ในการตั้งค่าโซนเวลาทั่วโลกของระบบ (รวมถึง / etc / localtime) เกือบจะแน่นอนต้องมีการรีสตาร์ท cron daemon เป็นอย่างน้อยและอาจเป็นไปได้ว่าระบบรีบูตจะมีผลอย่างสมบูรณ์ การแก้ไขการกำหนดค่า TZ ใน crontab ไม่ควรต้องการการโหลด cron daemon อีกครั้งเนื่องจากควรตรวจพบว่าไฟล์มีการเปลี่ยนแปลงและโหลดซ้ำโดยอัตโนมัติ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.