Directory

cron 執行作業時的“工作目錄”是什麼?

  • June 28, 2020

我有一個腳本,當我從命令行執行它時,它可以工作,但是當我安排它時,cron我得到它找不到文件或命令的錯誤。我的問題是雙重的:

  1. 當我使用 安排 cron 作業crontab -e時,它是否使用我的使用者 ID 作為其權限的基礎?或者它是否使用某種 cron 使用者 ID 及其相關權限?
  2. 啟動 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,但我可以作為我的使用者。為了讓它正常工作,我缺少什麼?

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

引用自:https://unix.stackexchange.com/questions/38951