Bash文件手动运行良好,但在cronjob上停止

时间:2018-11-01 10:47:51

标签: bash cron

我创建了一个bash文件,该文件查询数据库,然后更新一些表。 当我手动运行它时,一切都会顺利进行,但是当我使用cronjob运行它时,它将运行第一个查询,然后在进入循环之前停止。 在网上对其进行调查后,我发现了可能是问题的几件事,但从我的角度看,一切看起来都井井有条。 所以我做了什么:

  1. 一开始检查bash中是否包含#!/bin/bash
  2. 检查了cronjob中的路径是否正确。我下面的cronjob

    0-59/5 * * * * cd /path/path2/bashLocation/; ./bash.sh
    
  3. 循环的格式为

    for ID in ${IDS//,/ }
    do
        ...do something
    done
    

这可以通过手动良好测试。我的IDS是字符串格式,这就是为什么我用//,/分割它的原因。(很好用)

我将所有输出记录在日志文件中,但是没有显示任何错误。

有人有没有遇到过这个问题,或者有什么想法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

  1. 如果您在cron中运行的命令带有百分号('%'),则需要使用反斜杠对其进行转义。我被这个咬了。来自联机帮助页:“命令中的百分号(%),除非使用反斜杠()进行转义...”

  2. 从cron运行时,$ PATH变量可能有所不同。尝试在脚本的开头放置以下内容:export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

  3. 尝试显式运行bash,即不是在crontab中运行./bash.sh,而是尝试/bin/bash bash.sh