如何在Crontab中执行SH脚本

如何在Crontab中执行SH脚本

我有一个简单的.sh脚本:

#!/bin/bash
echo "Test1"
touch /home/john/test.txt
echo "Test2"

它可以执行并且可用 (ugo+x)。如果我运行此脚本,它会像我预期的那样工作。

但如果我尝试在 crontab 中运行它,则不会得到任何结果。我可以在日志中看到该作业已启动,并且我得到了(未安装 MTA,丢弃输出)

据我所知 - 此消息不是错误?这只是意味着我没有邮件(或其他输出渠道)?但为什么脚本没有结果?顺便说一句 - 在 CRONTAB 中我使用下一行:

30 * * * * sh file.sh >> /home/john/log.log

任何想法?

答案1

如果您的脚本是可执行的,那么您不需要运行 crontab /bin/sh file.sh

此外,file.sh可能不在 crontab 运行的目录中。您最好使用/path/to/file.sh

重定向 crontab 输出时,您还需要捕获 stderr。捕获 stdout 和 stderr 后,我似乎记得 crontab 不再抱怨其中继输出的能力。

30 * * * * /path/to/file.sh >> /home/john/log.log 2>&1

答案2

谢谢大家,通过你们的建议我发现了一个错误。我没有在 crontab 中使用完整路径,这就是原因。

相关内容