Cron Job ไม่ทำงาน?


24

ฉันมีไฟล์ crontab ที่มีลักษณะเช่นนี้:

* * * * * /home/abliskovs/update/update.sh

อย่างไรก็ตามเมื่อฉันตรวจสอบ syslog เพื่อหาหลักฐานว่างานมีการทำงานไม่มีอะไรที่อาจบ่งบอกว่ามันเคยวิ่ง ฉันจะตรวจสอบว่ามันทำงานอยู่ได้อย่างไร

crontab -l ส่งออกต่อไปนี้:

* * * * * /home/abliskovs/update/update.sh


ตกลงฉันทำอย่างนั้นแล้ว
Alex Bliskovsky

อาจจะเป็นคำถามที่โง่เง่า แต่มันเคยเกิดขึ้นกับฉันมาก่อน ตรวจสอบให้แน่ใจว่า cron daemon กำลังทำงานจริง! : P การเดาที่สองคือสิทธิ์ตรวจสอบให้แน่ใจว่าสามารถเรียกใช้งานได้โดยผู้ใช้ที่เรียกใช้ cronjob
Mattias Ahnberg

คำตอบ:


21

เพิ่ม >> / tmp / testlog.log ที่ส่วนท้ายของรายการ crontab ของคุณ (เพื่อเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ที่คุณสามารถตรวจสอบหรือตรวจสอบว่ามันทำงานอยู่หรือไม่นอกจากนี้ 2> & 1 จะรวมเอาท์พุทจากคอนโซลข้อผิดพลาดด้วย)

ตัวอย่าง

0 * * * * /home/abliskovs/update/update.sh 2> & 1 /tmp/testlog.log

ตรวจสอบให้แน่ใจดังต่อไปนี้:

  • เพิ่ม cronjobs อย่างถูกวิธี หากคุณใช้ crontab -e ภายในบัญชีของคุณเองสคริปต์จะทำงานกับผู้ใช้ของคุณ (และทำให้รายการ crontab มีหนึ่งช่องน้อยกว่า - ผู้ใช้เรียกใช้ตามที่ทราบ) หากคุณเพียงแค่คัดลอกข้อความที่คัดลอกไว้ด้านบนไปยัง /etc/cron.d มันจะล้มเหลวเนื่องจากคุณไม่ได้ระบุผู้ใช้ (หรือค่อนข้างจะพบว่าไม่มีผู้ใช้ชื่อ "bash")
  • ตรวจสอบให้แน่ใจว่าไฟล์สคริปต์สามารถเรียกใช้งานได้มิฉะนั้นจะไม่สามารถเรียกใช้งานได้
  • โหลดบริการ cudo jobs sudoอีกครั้งหรือเริ่มบริการ cron ใหม่sudo /etc/init.d/cron restart

จะทำให้สามารถเรียกใช้ไฟล์ได้อย่างไร?

มีหลายวิธีที่จะทำให้ไฟล์ของคุณทำงานได้

chmod +x /home/abliskovs/update/update.sh 

chmod -R 0755 /home/abliskovs/update/update.sh

chmod a+x /home/abliskovs/update/update.sh

3

ตรวจสอบให้แน่ใจว่าไฟล์สคริปต์นั้นสามารถเรียกใช้งานได้ {chmod 755} มิฉะนั้นจะไม่สามารถเรียกใช้งานได้


2
เพื่อให้สามารถเรียกใช้ไฟล์ได้คุณสามารถเรียกใช้chmod +x filename
Stefano Palazzo

0

เชลล์สคริปต์update.shอาจมีข้อผิดพลาดตัวอย่างเช่นบางคำสั่งที่ไม่สามารถดำเนินการได้เนื่องจากไม่พบคำสั่ง ในกรณีนี้มันอาจช่วยในการเพิ่มพา ธ ไปยังคำสั่งของคุณในตัวแปร PATH หรือเพื่อเพิ่มไว้ข้างหน้าคำสั่งของคุณโดยตรง นอกจากนี้ยังช่วยในการระบุที่อยู่อีเมล MAILTO, อีเมลซึ่งเป็นผลมาจากการดำเนินการ Cronjobs จะถูกส่งไปยังที่อยู่นี้

PATH=/path/to/your/command:/another/important/path
MAILTO=my_name@my_domain 

นอกจากนี้คุณยังสามารถตรวจสอบกล่องจดหมายท้องถิ่นด้วยmailและไฟล์ syslog /var/log/syslogเพื่อหาข้อผิดพลาด ดูเพิ่มเติมคำถามที่เกี่ยวข้องนี้ทำไมcronjobs อาจไม่ทำงาน


0

ฉันพบปัญหาเดียวกันและสาเหตุสำหรับฉันคือ crontab นั้นไม่ทำงานเพราะไม่ได้รับอนุญาต ฉันมีการเปลี่ยนแปลงไฟล์และวางไว้ใน /tmpt/output.log

*/5 * * * * /usr/bin/php /home/ubuntu/app/artisan cmd:process-order > /tmp/queue.output

แจ้งให้เราทราบว่าสิ่งนี้ได้ผลสำหรับคุณ

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