首页 文章

Cron Job无法在Linux环境中工作

提问于
浏览
0

我一直在工作时间的星期一到星期五之间每分钟运行一个shell脚本,并认为它运行正常,因为我可以在使用“crontab -l”命令时看到它 . 该脚本调用一段Java代码来检查postgresql表中的某些条件,如果满足这些条件,它会写入另一个表 . 该脚本位于Linux服务器上的以下目录中 .

/var/lib/tomcat7/webapps/sh

所以我们说它叫做“test.sh”,如果我的cronjob看起来像这样:

* 08-18 * * 1-5 /var/lib/tomcat7/webapps/sh/test.sh

也就是说,它应该在每周的每一分钟运行,从星期一到星期五上午8点到下午18:59 . 我只是尝试通过向postgresql表添加虚拟数据来测试它,以便其他表应该被写入并且没有任何反应 . 但是,当我从命令行手动运行./test.sh时,它工作正常 . 问题似乎与我的cron有关 . 如果我输入:

grep CRON /var/log/syslog

我可以看到它今天每分钟都在运行 . 输出看起来像这样

Nov 25 12:38:01 webserver CRON[11868]: (ubuntu) CMD (/var/lib/tomcat7/webapps/sh/test.sh)
Nov 25 12:39:01 webserver CRON[11888]: (ubuntu) CMD (/var/lib/tomcat7/webapps/sh/test.sh)
Nov 25 12:40:01 webserver CRON[11953]: (ubuntu) CMD (/var/lib/tomcat7/webapps/sh/test.sh)
Nov 25 12:41:01 webserver CRON[11953]: (ubuntu) CMD (/var/lib/tomcat7/webapps/sh/test.sh)
Nov 25 12:42:01 webserver CRON[11985]: (ubuntu) CMD (/var/lib/tomcat7/webapps/sh/test.sh)

等 . 但是在我更改了postgresql表中的数据后,这似乎没有任何影响 . 好像脚本实际上并没有运行 . 虽然它从命令行手动运行时运行完美 . 有没有人经历过cron工作的这种事情,或者对于为什么会发生这种情况有任何建议?任何援助将不胜感激 . 提前致谢!

1 回答

  • 0

    使用 /var/lib/tomcat7/webapps/sh/test.sh 启动脚本时,您的工作目录不是 /var/lib/tomcat7/webapps/sh ,而是 /

    您可以使用 pwd 命令获取当前工作目录或获取脚本位置(请参阅此post然后:

    cd $SCRIPTPATH
    cd ../java/JProject/sr
    

    要么

    使用绝对路径更改相对路径 ../java/JProject/src

相关问题