我一直在工作时间的星期一到星期五之间每分钟运行一个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工作的这种事情,或者对于为什么会发生这种情况有任何建议?任何援助将不胜感激。提前致谢!
答案 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