Crontab 是否影响 bash 脚本的条件?

Crontab 是否影响 bash 脚本的条件?

我有点困惑,不太清楚如何调试。我有一个自己编写的 bash 脚本,用于检查 Samba 共享是否处于活动状态,如果不处于活动状态,则向我发送电子邮件。

脚本位于/root/SKRIPTS/,权限如下:

-rwxr-xr-x   1 root  wheel   281 Nov  8 08:54 test_samba_shares.sh
-rwx------   1 root  wheel    39 Nov  7 13:56 smbclient.cred

.sh脚本的内容如下:

smbclient -L 10.0.0.1 -A /root/SKRIPTS/smbclient.cred | grep -q Backup

if [ $? -eq 0 ]
then
    echo "Backup_* mounted, nothing to do"
else
    echo "Subject: Samba has failed" | /usr/sbin/sendmail -v [email protected]
fi

return 1;

/etc/crontab 看起来像这样(仅限条目)

10 1 * * * root /root/SKRIPTS/test_samba_shares.sh

问题是,如果我以 root 身份运行它,它会完美运行。但每天晚上我都会收到一封电子邮件,说 samba 失败了,这表明 cron 脚本不知何故跳转到了 else 路径。这怎么可能?我是不是忽略了某些显而易见的东西?调试这个问题的最佳方法是什么?

感谢您的帮助

答案1

有时,cron 作业的运行方式可能与你预期的不一样$PATH。首先,我会尝试完全限定smbclient可执行文件的路径,以消除这种可能性。或者,PATH在 cron 调用的包装器脚本中明确导出你的。

相关内容