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

linux – Bash脚本在从shell提示符执行时产生的结果与cron执行的结果不同,第1张

概述请考虑以下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 - 请考虑以下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    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执行:

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

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

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

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

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

$which rm/bin/rm
总结

以上是内存溢出为你收集整理的linux – Bash脚本在从shell提示符执行时产生的结果与cron执行的结果不同全部内容,希望文章能够帮你解决linux – Bash脚本在从shell提示符执行时产生的结果与cron执行的结果不同所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1022060.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存