我的crontab出了什么问题?

时间:2013-08-31 07:40:01

标签: linux centos crontab

我将创建一个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

我在crontab检查了/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。

任何帮助都会受到赞赏。提前谢谢。

1 个答案:

答案 0 :(得分:1)

出于调试目的,将sh替换为/bin/sh -vx条目中的crontab

 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