如果条件允许,Crontab 会影响 bash 脚本?

Seb*_*ian 1 scripting linux bash cron

我在这里有点困惑,并不确定如何调试它。我有一个自己编写的 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
Run Code Online (Sandbox Code Playgroud)

.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 mail@localmail.server
fi

return 1;
Run Code Online (Sandbox Code Playgroud)

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

10 1 * * * root /root/SKRIPTS/test_samba_shares.sh
Run Code Online (Sandbox Code Playgroud)

问题是,如果我以 root 身份运行它,它就可以完美运行。但是每天晚上我都会收到一封电子邮件,说 samba 失败了,表明 cron 脚本以某种方式进入了 else 路径。怎么会这样?我在这里遗漏了一些明显的东西吗?调试此问题的最佳方法是什么?

谢谢你的帮助

guz*_*son 5

有时,cron 作业不会以$PATH您可能期望的方式运行。首先,我会尝试完全限定您的smbclient可执行文件的路径,只是为了消除这种可能性。或者,PATH在由 cron 调用的包装器脚本中显式导出您的。