【发布时间】:2018-11-01 10:47:51
【问题描述】:
我创建了一个 bash 文件来查询我的数据库,然后更新一些表。 当我手动运行它时,一切都很顺利,但是当我使用 cronjob 运行它时,它会运行第一个查询,然后在进入循环之前停止。 在网上查看后,我发现了一些可能是问题的东西,但从我这边来看,一切看起来都井井有条。 所以我做了什么:
- 检查
#!/bin/bash是否在开始时包含在我的 bash 中。 -
检查 cronjob 中的路径是否正确。下面是我的cronjob
0-59/5 * * * * cd /path/path2/bashLocation/; ./bash.sh -
循环格式为
for ID in ${IDS//,/ } do ...do something done
手动测试效果很好。我的 IDS 是字符串格式,所以我用 //,/ 拆分它。(工作正常)
我将所有输出记录在一个日志文件中,但它没有显示任何错误。
以前有没有人遇到过这个问题或者有任何解决这个问题的想法?
【问题讨论】:
-
我们可以看看整个脚本吗?
-
没有看到它中断的实际点,我猜它可能与权限相关(如果 crontab 针对不同的用户/sudo 设置)
-
我发现错误出在循环中,出于某种原因,cronjob 不支持它,现在我试图为循环寻找不同的方法。我对 sh 和 bash 部分有点困惑。如果我将我的脚本作为 ./bash.sh 运行,并且在我的 bash 文件中设置了 #!/bin/bash 它不应该作为 bash 而不是 sh 读取和执行吗?