ฉันพยายามตั้งค่างานรูท cron เพื่อรันสคริปต์ Bash ในฐานะรูทเพื่อรันที่ 7,37 นาทีทุกชั่วโมงทุกวันทุกเดือนทุกเดือน สคริปต์นี้ตั้งอยู่และตั้งชื่อ/usr/bin
tunlrupdate.sh
มันอัปเดต DNS ของ Tunlr
$ ls -l /usr/bin/tunlrupdate.sh
-rwxr-xr-x 1 root root 2133 Sep 24 15:42 /usr/bin/tunlrupdate.sh
สคริปต์ทุบตีนี้สามารถใช้ได้ที่นี่
เมื่อเรียกใช้สคริปต์จะเขียนสิ่งที่เกิดขึ้นในบันทึกที่อยู่ใน /var/log/tunlr.log
ในการเพิ่มงาน cron รูทนี้ฉันใช้มาตรฐานสำหรับ crontab ของรูท
sudo crontab -e
และแทรกสองบรรทัดเหล่านี้ในตอนท้าย ฉันคาดว่า cron จะเรียกใช้สคริปต์เป็น root
# check for updated Tunlr DNS every 30 minutes at the hour + 7 mn and hour + 37 mn
07,37 * * * * root /usr/bin/tunlrupdate.sh
คำสั่งในภายหลังsudo crontab -l
ยืนยันว่ามีการแทรกงาน cron
ฉันรีบูท Ubuntu และกำลังตรวจสอบไฟล์บันทึกถ้างาน cron เปิดใช้งานอย่างถูกต้อง อย่างไรก็ตามไม่มีสิ่งใดในล็อกไฟล์/var/log/tunlr.log
หมายความว่างานไม่เคยเปิดตัวได้สำเร็จ
ฉันตรวจสอบว่าถ้าฉันเรียกใช้สคริปต์จากบรรทัดคำสั่ง
sudo /usr/bin/tunlrupdate.sh
จากนั้นไฟล์บันทึกการทำงานจะได้รับการอัพเดตตามนั้น
เหตุใดงาน cron นี้ไม่ทำงานตามที่วางแผนไว้ในระบบของฉัน
อัปเดต 1: โซลูชันที่เสนอทั้งหมดจนถึงไม่สามารถใช้งานได้ ผมขอขอบคุณสำหรับ Olli CLI sudo grep CRON /var/log/syslog
ไปยังรายการบันทึกของระบบ อย่างไรก็ตามฉันได้รับข้อผิดพลาด CRON
CRON[13092]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ]
&& find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php
/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
ด้วยการแนะนำ PATH = การแทรก & การใช้พา ธ สัมบูรณ์จากรูทสำหรับฟังก์ชั่นในสคริปต์หรือไม่มีวิธีแก้ปัญหาที่แนะนำนี้ที่นี่ ฉันยังคงได้รับข้อผิดพลาดนี้
หลังจากค้นหาบางฉันพบข้อผิดพลาดในไฟล์/usr/lib/php5/maxlifetime
ตามที่อธิบายไว้ที่นี่ :Change #!/bin/sh -e --> #!/bin/sh -x
จากนั้นแสดงรายการบันทึกข้อผิดพลาด CRON ในระบบของฉัน
sudo grep CRON /var/log/syslog
Feb 11 18:07:01 Marius-PC CRON[14067]: (root) CMD (root /usr/bin/tunlrupdate.sh)
Feb 11 18:07:01 Marius-PC CRON[14066]: (root) MAIL (mailed 1 byte of output; but got
status 0x00ff, #012)
ฉันยังไม่ได้รับสคริปต์ bash ที่กำลังเรียกใช้งาน เวลานี้ไม่มีข้อผิดพลาดแสดงในบันทึก เพื่อให้ได้ความมั่นใจนี่ไม่ใช่เนื้อหาของสคริปต์ฉันลดสคริปต์เป็น 3 บรรทัดต่อไปนี้:
#!/bin/bash
LOGFILE=/var/log/tunlr.log
echo $LOGFILE >> $LOGFILE
ฉันยังไม่ได้งาน cron ผ่าน ไม่มีสิ่งใดเขียนในไฟล์บันทึก ดังนั้นแม้อาจเป็นสคริปต์ว่างเปล่าจะไม่ทำงานใน cron? ฉันไม่เข้าใจ ฉันรู้ว่าการลองใช้สคริปต์ลดเหลือ 2 บรรทัดนี้:
#!/bin/bash
exit 0
และยังคงบันทึกข้อผิดพลาดเดียวกัน สคริปต์ cron ไม่ผ่าน ...