我使用以下 if ... then 在自动关机脚本中进行测试,该脚本由 cron 每 15 分钟启动一次。
# Check if disk1 is currently spinning
if [ "$(hdparm -C /dev/sdb1 | grep -o "active/idle\|standby")" = "active/i$
logit disk1 running, auto shutdown terminated
return 1
如果我使用 手动启动脚本,则此方法可正常工作./autoshutdown.sh
。磁盘状态将被正确检测。
但是如果 cron 启动了该脚本并且没有检测到状态,则使用 else 语句。
为什么会有这种差异?我需要做哪些更改?
答案1
可能是因为您的$PATH
cron 作业不同,并且找不到 hdparm。请指定 的完整路径hdparm
,您可以通过 找到它type -p hdparm
。
我还建议运行cron
如下作业:
env | sort >$HOME/cron.env
echo $PATH | tr ':' "\n" >$HOME/cron.path
查看您的cron
环境是什么样的。更一般地,查看所有运行环境。