ฉันมีสคริปต์ที่ทำงานเมื่อฉันเรียกใช้จากบรรทัดคำสั่ง แต่เมื่อฉันกำหนดเวลาด้วยcron
ฉันพบข้อผิดพลาดที่ไม่สามารถค้นหาไฟล์หรือคำสั่งได้ คำถามของฉันคือสองเท่า:
เมื่อฉันจัดตารางเวลางาน cron โดยใช้
crontab -e
มันใช้ ID ผู้ใช้ของฉันเป็นพื้นฐานสำหรับการอนุญาตหรือไม่ หรือว่าจะใช้ ID ผู้ใช้ cron ของบางประเภทและสิทธิ์ที่เกี่ยวข้อง?เมื่อเปิดใช้งาน cron แล้วไดเรคทอรี่การทำงานคืออะไร? เป็นไดเรกทอรีที่ฉันระบุสคริปต์ให้เรียกใช้หรือไดเรกทอรีอื่นหรือไม่
นี่คืองาน cron ของฉัน:
15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh
นี่คือสคริปต์จริง:
vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`"
echo "$vIP_ADDR"
sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt
ssmtp XXXXX@gmail.com < emailmsg.txt
นี่คือข้อผิดพลาดที่ฉันได้รับเมื่อฉันดูmail
ข้อความที่ผลิตโดยcron
:
sed: can't read template.txt: No such file or directory
/home/xxxx/Documents/Scripts/email_ip_script.sh: line 15: ssmtp: command not found
ไม่พบtemplate.txt
แต่มันอยู่ในไดเรกทอรีเดียวกับสคริปต์ มันไม่สามารถทำงานได้ssmtp
แต่ฉันสามารถเป็นผู้ใช้ของฉันได้ อะไรที่ฉันขาดหายไปในการทำงานอย่างถูกต้อง?
cron
เป็นของตัวเองPATH
หรือฉันสามารถตรวจสอบผู้ใช้ของฉันได้PATH
หรือไม่ ฉันตั้งค่า ssmtp ให้เป็นของตัวเองuser
และwheel
อนุญาตให้คิดว่าจะอนุญาตให้ทุกคนใช้งานได้ (รวมถึง cron) ถ้าช่วยฉันด้วย CENTOS 6.2