0

我将创建一个crontab任务来安排我的任务。

我的/etc/crontab长相是这样的

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
17 15 * * * root sh /opt/app/tool/ReviewSummaryTool/runf.sh

任务脚本runf.sh的内容如下所示,

#!/usr/bin/env bash

java -Dhostname=$(hostname) -jar ReviewSummaryTool.jar -full

但是时间到了,crontab任务无法执行(我检查了输出日志)。

但是,任务脚本可以通过以下命令执行,

sh /opt/app/tool/ReviewSummaryTool/runf.sh

而且我查看了crontabat的日志,/var/log/cron好像任务已经执行了。请参阅下面的简要日志内容,

Aug 31 15:17:01 SSECBIGDATA01 crond[1677]: (*system*) RELOAD (/etc/crontab)
Aug 31 15:17:01 SSECBIGDATA01 CROND[29248]: (root) CMD (sh /opt/app/tool/ReviewSummaryTool/runf.sh)

现在,我不知道我的配置有什么问题。我的操作系统是 CentOS。

任何帮助将不胜感激。提前致谢。

4

1 回答 1

1

出于调试目的sh/bin/sh -vxcrontab条目中替换为:

 17 15 * * * root /bin/sh -vx /opt/app/tool/ReviewSummaryTool/runf.sh

然后将打印执行脚本的跟踪,并通过电子邮件发送给您。

并在你的脚本中添加logger命令,例如让它成为runf.sh

 #!/bin/sh
 logger -t runfjob start of runf pid $$ in $(pwd) on host $(hostname)
 java -Dhostname=$(hostname) -jar ReviewSummaryTool.jar -full
 logger -t runfjob end of runf pid $$

logger命令使用syslog(3). /var/log您应该在 下,也许在/var/log/messages 或等中找到这些消息/var/log/syslog...

我强烈建议将ReviewSummaryTool.jar文件的完整路径放在脚本的java命令中。runf.sh您的 cronjob 很可能在没有该文件的当前目录中运行。或者也许在cd命令之前放一个命令java

确保它$PATH是正确的并且java在那里找到。

于 2013-08-31T07:44:21.900 回答