ฉันพยายามกำจัดข้อผิดพลาดทั่วไปจำนวนมาก
ตรวจสอบให้แน่ใจว่า PATH พร้อมใช้งานสำหรับ cron
มี endline ที่ท้ายไฟล์ crontab
เขตเวลาถูกตั้งค่าโดย:
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
* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
* * * * * date
และยืนยันว่าdate
แสดงเวลาที่คาดหวัง โปรดทราบว่าการตั้งค่าตัวแปรสภาพแวดล้อม TZ จากภายใน crontab อาจไม่ส่งผลกระทบต่อเขตเวลาตามที่ cron daemon ใช้ แต่จะส่งผลต่อกระบวนการที่เปิดใช้ผ่าน cron ดังนั้นหากคุณตั้งค่า TZ ใน crontab ของคุณฉันขอแนะนำให้แสดงความคิดเห็นชั่วคราว และการตั้งค่าเวลาโดยใช้เขตเวลาของนาฬิการะบบ (อาจเป็น UTC หากคุณใช้ระบบบูทเดี่ยว แต่อาจเป็นเวลาท้องถิ่น)
~/event.sh
ลองด้วย/home/username/event.sh