Cron Job无法在Linux环境中工作

时间:2014-11-25 13:19:32

标签: linux shell cron

我一直在工作时间的星期一到星期五之间每分钟运行一个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 :(得分:0)

当您使用/var/lib/tomcat7/webapps/sh

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

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

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

OR

使用绝对路径

更改相对路径../java/JProject/src