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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |