
我正在嘗試運行一個簡單的 bash 腳本,如果我的筆記本沒有透過 cron 作業插入交流電,腳本會關閉它。
我的腳本如下:
#!/bin/bash
if ! on_ac_power; then
poweroff
fi
我已經將 cron 配置為每分鐘運行一次,如下所示:
*/1 * * * * /home/user/Documents/script.sh
如果我手動運行該腳本,它可以正常工作,但除此之外,它在 cron 下似乎沒有任何效果。
我在這裡缺少什麼?
答案1
首先,我沒有在 root 下運行我的 cron。
顯然,要讓 cron 在 root 下運行,您必須添加它sudo crontab -e
,任何僅添加的內容crontab -e
都不會以 sudo 運行。
其次,如參考文獻中所指出的:
預設情況下,cron 在非常有限的環境中運行,因此從用戶終端通過命令名運行的許多命令需要 crontab 中的完整路徑或 crontab 開頭的聲明來擴展路徑。
所以我最終在腳本中替換poweroff
為,現在它按預期運行。/sbin/shutdown
#!/bin/bash
if ! on_ac_power;
then
/sbin/shutdown
fi