我正在尝试运行一个简单的 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