ฉันมีnotify.sh
สคริปต์ที่ดูเหมือนว่า:
notify-send "hi welcome"
การแจ้งเตือน crontab ของฉันสำหรับ 2 PM:
0 14 * * * home/hacks/notify.sh
อย่างไรก็ตามวิธีนี้ใช้ไม่ได้ อะไรคือปัญหา?
ฉันมีnotify.sh
สคริปต์ที่ดูเหมือนว่า:
notify-send "hi welcome"
การแจ้งเตือน crontab ของฉันสำหรับ 2 PM:
0 14 * * * home/hacks/notify.sh
อย่างไรก็ตามวิธีนี้ใช้ไม่ได้ อะไรคือปัญหา?
คำตอบ:
สคริปต์ของคุณไม่มี #! บรรทัดที่จุดเริ่มต้นซึ่งเป็นเวทย์มนตร์ตีความโดยเคอร์เนลเพื่อพูดล่ามคำสั่งที่จะใช้สำหรับสคริปต์
ทำให้เป็นแบบนี้:
#!/bin/sh
notify-send "hi welcome"
และตรวจสอบให้แน่ใจว่าสคริปต์นั้นทำงานได้:
ls -l home/hacks/notify.sh
chmod +x home/hacks/notify.sh
ls -l home/hacks/notify.sh
นอกจากนี้เนื่องจากคุณกำลังขอให้สิ่งนี้เกิดขึ้นวันละครั้งเขตเวลาของ crontab จะเหมือนกับเขตเวลาของคุณหรือไม่ คุณอาจพบสิ่งนี้เกิดขึ้นเวลา 14.00 น. GMT
การทำให้ crontab ทำงานได้ง่ายเท่านั้น ที่นี่ฉันจะบอกวิธีการใช้งาน crontab มันมีประโยชน์สำหรับทุกคนที่ติดอยู่บน crontab
*/1 * * * * cd /home/hacks && sh notify.sh
เพื่อให้สคริปต์เรียกใช้งานได้เราต้องทำ:
chmod +x home/hacks/notify.sh
ที่นี่ฉันเรียกใช้สคริปต์นี้ทุก ๆ นาที ... โดยทำสคริปต์ด้านล่างคุณสามารถเขียนลงในไฟล์บันทึกเพื่อค้นหาว่ามันทำงานหรือไม่
เขียนบันทึก
*/1 * * * * cd /home/hacks && sh notify.sh>>test.log
ส่งอีเมล์
*/1 * * * * cd /home/hacks && sh notify.sh>>test.log | mail -s "Hi this is example" user@domain.com
4 สมมติฐาน:
cron daemon ไม่ทำงาน (ทำps axfww | grep cron
และตรวจสอบ)
การแจ้งเตือนการส่งกำลังพยายามส่งเอาต์พุตไปยังเทอร์มินัลหรือเซสชัน X - แต่จะถูกเรียกใช้จากภายในcron
สภาพแวดล้อมและไม่ทราบว่า "ใครจะพูดกับ" เพื่อพูด
สคริปต์ของคุณไม่สามารถเรียกใช้งานได้
home/
เส้นทางในสคริปต์ crontab เป็นญาติกับผู้ใช้สคริปที่ได้รับการดำเนินการตาม ลองใช้เส้นทางแบบเต็ม
เพิ่มexport DISPLAY=:0
เหนือบรรทัดการแจ้งเตือน - ส่งในสคริปต์ของคุณ ที่อยู่นี้เป็นจุดที่สองของ lornezog
คุณต้องเปิด crontab โดยใช้คำสั่งต่อไปนี้:
crontab -u username -e (to edit) -l(to list) -r(to remove) 10(minutes) 8-15(hours) *(Day of month) *(month) 1,3,5(days of week) /path/to/script/script_name.sh
สิ่งนี้จะเรียกใช้สคริปต์ของคุณหนึ่งครั้งต่อชั่วโมงตั้งแต่ 8.00 น. ถึง 15.00 น. เวลา 10 นาทีที่ผ่านมาทุกวันจันทร์วันพุธและวันศุกร์
แรกของทั้งหมดที่เราต้องแก้ไข crontab ที่มีคำสั่งcrontab -e
และกว่าภายในนี้เพิ่มเส้นทางของการปฏิบัติการสคริปต์และในกรณีของคุณเช่นนี้Crontab
* 14 * * * home/hacks/notify.sh >/dev/null 2>&1
เริ่ม / หยุด / เริ่มบริการ cron
/etc/init.d/crond start /stop / restart
service crond start /stop /restart
systemctl stop crond.service
systemctl หยุด crond.service
ค่อนข้างง่ายเพิ่มบรรทัดต่อไปนี้ที่ด้านล่างของไฟล์ crontab ผ่าน:
sudo nano /etc/crontab
@reboot root cd /home/pi/node-sonos-http-api && npm start &