加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – Bash脚本在从shell提示符执行时产生的结果与cron执行的

发布时间:2020-12-14 00:05:31 所属栏目:Linux 来源:网络整理
导读:请考虑以下crontab(root): SHELL=/bin/bash......0 */3 * * * /var/maintenance/raid.sh 和bash脚本/var/maintenance/raid.sh: #!/bin/bashecho -n "Checking /dev/md0... "if ! [ $(mdadm --detail /dev/md0 | grep -c "active sync") -eq 2 ]; then mdad
请考虑以下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" "my@email.com";
    echo "ERROR"
else 
    echo "ALL OK"
fi;

#-------------------------------------------------------

echo -n "Checking /dev/md1... "
...

而这就是…

…从shell提示符(bash)执行:

邮件与mdadm –detail / dev / md0输出发送到我的电子邮件(正确的行为)

…由cron执行:

空白邮件发送到我的电子邮件(主题在那里,但没有消息)

为什么会出现这种差异以及如何解决?

解决方法

如 in the comments所示,请在crontab脚本上使用完整路径,因为crontab确实具有与普通用户不同的环境变量(在本例中为root).

在你的情况下,/ sbin / mdadm代替mdadm.

如何获得命令的完整路径?使用以下命令:

$which rm
/bin/rm

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读