![脚本中 hdparm 状态的使用只能手动进行,不能通过 cron 进行](https://linux22.com/image/1153781/%E8%84%9A%E6%9C%AC%E4%B8%AD%20hdparm%20%E7%8A%B6%E6%80%81%E7%9A%84%E4%BD%BF%E7%94%A8%E5%8F%AA%E8%83%BD%E6%89%8B%E5%8A%A8%E8%BF%9B%E8%A1%8C%EF%BC%8C%E4%B8%8D%E8%83%BD%E9%80%9A%E8%BF%87%20cron%20%E8%BF%9B%E8%A1%8C.png)
我使用以下 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
环境是什么样的。更一般地,查看所有运行环境。