Directory
cron 執行作業時的“工作目錄”是什麼?
我有一個腳本,當我從命令行執行它時,它可以工作,但是當我安排它時,
cron
我得到它找不到文件或命令的錯誤。我的問題是雙重的:
- 當我使用 安排 cron 作業
crontab -e
時,它是否使用我的使用者 ID 作為其權限的基礎?或者它是否使用某種 cron 使用者 ID 及其相關權限?- 啟動 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
以下是我查看
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
,但我可以作為我的使用者。為了讓它正常工作,我缺少什麼?
cd /home/xxxx/Documents/Scripts/
如果您希望您的作業在該目錄中執行,請添加。cron 沒有理由更改為該特定目錄。Cron 在你的主目錄中執行你的命令。至於
ssmtp
,它可能不在您的預設值中PATH
。Cron 的預設路徑取決於實現,因此請檢查您的手冊頁,但很可能ssmtp
不在/usr/sbin
您的 defaultPATH
中,只有 root 的。PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin 15 7 * * * cd /home/xxxx/Documents/Scripts && ./email_ip_script.sh