我创建了一个bash文件,该文件查询数据库,然后更新一些表。 当我手动运行它时,一切都会顺利进行,但是当我使用cronjob运行它时,它将运行第一个查询,然后在进入循环之前停止。 在网上对其进行调查后,我发现了可能是问题的几件事,但从我的角度看,一切看起来都井井有条。 所以我做了什么:
#!/bin/bash
。检查了cronjob中的路径是否正确。我下面的cronjob
0-59/5 * * * * cd /path/path2/bashLocation/; ./bash.sh
循环的格式为
for ID in ${IDS//,/ }
do
...do something
done
这可以通过手动良好测试。我的IDS是字符串格式,这就是为什么我用//,/
分割它的原因。(很好用)
我将所有输出记录在日志文件中,但是没有显示任何错误。
有人有没有遇到过这个问题,或者有什么想法可以解决这个问题?
答案 0 :(得分:0)
如果您在cron中运行的命令带有百分号('%'),则需要使用反斜杠对其进行转义。我被这个咬了。来自联机帮助页:“命令中的百分号(%),除非使用反斜杠()进行转义...”
从cron运行时,$ PATH变量可能有所不同。尝试在脚本的开头放置以下内容:export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
尝试显式运行bash,即不是在crontab中运行./bash.sh
,而是尝试/bin/bash bash.sh