我将创建一个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。
任何帮助都会受到赞赏。提前谢谢。
答案 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
。