请考虑以下 crontab(root):
SHELL=/bin/bash
...
...
0 */3 * * * /var/maintenance/raid.sh
和 bash 脚本/var/maintenance/raid.sh
:
#!/bin/bash
echo -n "Checking /dev/md0... "
if ! [ $(mdadm --detail /dev/md0 | grep -c "active sync") -eq 2 ]; then
mdadm --detail /dev/md0 | mail -s "Raid problem /dev/md0" "[email protected]";
echo "ERROR"
else
echo "ALL OK"
fi;
#-------------------------------------------------------
echo -n "Checking /dev/md1... "
...
这就是当……时发生的情况。
...从 shell 提示符 (bash) 执行:
邮寄方式:mdadm --detail /dev/md0
输出发送到我的电子邮件(正确行为)
...由 cron 执行:
空白邮件发送到我的邮箱(主题有,但没有消息)
为什么会出现这种差异以及如何解决?
如..所示在评论中,请在 crontab 脚本上使用完整路径,因为 crontab 确实具有与普通用户(在本例中为 root)不同的环境变量。
在你的情况下,而不是mdadm
, /sbin/mdadm
成功了。
如何获得命令的完整路径?使用命令command -v
:
$ command -v rm
/bin/rm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)