Pet*_*ter 5 linux bash shell cron
请考虑以下 crontab (root):
SHELL=/bin/bash
...
...
0 */3 * * * /var/maintenance/raid.sh
Run Code Online (Sandbox Code Playgroud)
和 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" "my@email.com";
echo "ERROR"
else
echo "ALL OK"
fi;
#-------------------------------------------------------
echo -n "Checking /dev/md1... "
...
Run Code Online (Sandbox Code Playgroud)
这就是当...
...从 shell 提示符 (bash) 执行:
带有mdadm --detail /dev/md0输出的邮件被发送到我的电子邮件(正确的行为)
...由 cron 执行:
空白邮件发送到我的邮箱(主题在那里,但没有消息)
为什么会有这种差异以及如何解决?
如注释中所示,请务必在 crontab 脚本上使用完整路径,因为 crontab 确实具有与普通用户(在本例中为 root)不同的环境变量。
在你的情况下,而不是mdadm,/sbin/mdadm成功了。
如何获取命令的完整路径?使用命令command -v:
$ command -v rm
/bin/rm
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2115 次 |
| 最近记录: |