我一直在工作时间的星期一到星期五之间每分钟运行一个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 回答
使用
/var/lib/tomcat7/webapps/sh/test.sh
启动脚本时,您的工作目录不是/var/lib/tomcat7/webapps/sh
,而是/
您可以使用
pwd
命令获取当前工作目录或获取脚本位置(请参阅此post然后:要么
使用绝对路径更改相对路径
../java/JProject/src