400-685-0732

WJMonitor舆情之声

企业大数据智能舆情监测管理解决方案

全网监测海量数据按需发布监测预警

实时把握舆情动态精准追溯信息源头

获取验证码
企业采购 个人使用
当前位置: 首页 > SEO博客 > crontab任务不执行的解决办法

crontab任务不执行的解决办法

时间:2012-01-16 21:48:32
Linux中,crontab的使用大家是有目共睹的,能方便的让您的调度任务程序自动的执行,它在好多使用场合作用还是挺重要的,实现了多任务程序的自动化执行。crontab的命令格式如下:

crontab用法

采用命令行crontab -l可以查看已经设置好的cron任务配置情况:

crontab查看命令

而使用crontab -e可以重新编辑cron任务,进入之后按照vi命令方式进行编辑和保存即可,当看到以下提示时:

crontab更新提示

说明新的crontab命令已经生效。

但是,在某些Linux发行版中,配置在crontab中的自动任务却不能执行,这个是为什么呢?之前我一直很纳闷为什么不能执行,这个问题实在是让我困惑了好久。今天我下定决心,决定非要解决一下这个问题,发现还真是找到了问题的关键所在。

下面先看一段代码:

root@ubuntu:/etc/job# cat startJob.sh
#!/bin/bash
java -jar /etc/job/Keywordjob.jar  >> info.log &

直接在目录中执行./startJob.sh是可以执行的,但是配置到crontab中就是不行。通过搜索别人的解决方法,我找到了问题的原因,那就是,在crontab的执行环境变量中,没有相应用户设置的环境变量,你需要手动设置一下环境变量,才能让它生效。于是,我将以上代码改成:

#!/bin/bash
. /etc/profile
java -jar /etc/job/Keywordjob.jar  >> info.log &

将用户设置过的java环境变量通过命令“. /etc/profile”激活后,java命令就可以执行了。

同样的,以下重新启动Tomcat的命令行设置在crontab中也是不能执行的:

root@ubuntu:/etc/job# cat restartTomcat.sh
#!/bin/bash
echo 'Starting tomcat at : '>> info.log
echo `date +%Y-%m-%d-%H:%M:%S` >>info.log
/etc/apache-tomcat-6.0.33/bin/startup.sh >> info.log

在命令行“/etc/apache-tomcat-6.0.33/bin/startup.sh >> info.log”之上加一句“. /etc/profile”后,问题同样得到解决。

以上是本人碰到crontab任务不能执行的解决方法,希望对大家有所帮助。
分享按钮