我有一个简单的.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 中使用完整路径,这就是原因。