Linux Crontab 设置的定时任务没有启动的排查

您所在的位置:网站首页 linux怎么看服务启动成功没有 Linux Crontab 设置的定时任务没有启动的排查

Linux Crontab 设置的定时任务没有启动的排查

2023-06-08 15:23| 来源: 网络整理| 查看: 265

1、先手动执行定时任务以此来判断脚本是否有问题。

2、确认服务器是否开启定时任务计划服务

命令:service crond status service crond start

3、检查定时任务配置的语法

crontab -l SHELL=/bin/bash 0 15 * * 1-5 cd /root/ye/project/StatShareDataProject/&& ./start.sh 可直接复制cd /root/ye/project/StatShareDataProject/&& ./start.sh来运行,若可以正常运行再另做判断。

4、 查看crontab执行记录

如果出现了crontab定时任务不执行的情况,首先需要定位问题,那么就需要通过日志来确定问题所在。

crontab的日志位置一般位于/var/log/cron,利用下面的语句即可查看日志。

tail -f /var/log/cron

上面的/var/log/cron只会记录是否执行了某些计划的脚本,但是具体执行是否正确以及脚本执行过程中的一些信息linux会通过邮件形式发送到给该用户。 对于root用户该邮件记录位于/var/spool/mail/root,通过以下命令可以查看最近的crontab执行情况。

tail -f /var/spool/mail/root

mail邮件一般只会记录脚本执行成功与否,如果执行失败,无法给出进一步的错误信息,这时需要我们将语句执行的错误信息重定向至文件中,这样可以很方便的查看错误信息。下面就给出了一个简单的例子

0 6 * * * /root/script/ss.sh >> /root/for_crontab/mylog.log 2>&1

上述语句表示把错误输出和标准输出都输出到mylog.log中,在执行的时候会将命令执行的相关信息记录至mylog.log文件中。

注:通过定时任务执行的程序需要手动将其 stop 掉(就算该程序手动执行只需要几秒就可执行完了,但是通过crontab设置成定时任务执行时,其执行后将一直占有着该线程,并且不会因为程序跑完了就自动停止该线程),要不然在下次再执行时会发现原先的程序还在执行中。

有些时候可能是路径问题,比如笔者写了个定时任务同步服务器时间如下所示:

每天定时同步服务时间

0 3 * * * root ntpdate -u 10.xx.xx.xx 如上写法,定时任务会定时执行,但是实际上并没有正常同步时间。手动复制上述命令(ntpdate -u 10.xx.xx.xx)则可以正常同步时间。

笔者修改成如下所示一切就正常了 0 3 * * * /usr/sbin/ntpdate -u 10.xx.xx.xx

增加了crontab任务后,在/var/spool/cron目录下会有一个当前登录账号命名的文件。比如我的登录账号是root。则会存在一个root文件。该文件的内容就是刚添加的crontab任务。

常见错误一: 定时任务配置好后,正常执行,但是执行过程中出现如下错误

nohup: failed to run command ‘java’: No such file or directory

解决方法: 往执行脚本中添加如下命令便可,这是因为cron并没有加载java相关的配置文件,所以我们需要在脚本中手动将其加入。

source /etc/profile 添加后脚本整体如下 #!/bin/bash source /etc/profile PROJECTNAME=UseAndUnuseData pid=`ps -ef |grep $PROJECTNAME |grep -v "grep" |awk '{print $2}'` if [ $pid ]; then echo "$PROJECTNAME is running and pid=$pid" kill -9 $pid echo "Start success to start $PROJECTNAME ...." nohup java -jar UseAndUnuseData.jar >> catalina.out 2>&1 & else echo "Start success to start $PROJECTNAME ...." nohup java -jar UseAndUnuseData.jar >> catalina.out 2>&1 & fi

遇到的一个坑: 定时任务如下: crontab -e

#周一到周五每天下午三点开始运行程序,统计基本数据 01 15 * * 1-5 cd /root/yechunbo/project/StaticBasicData/&& ./start.sh

手动执行正常,但是定时任务执行出错,具体错误如下所示:

/bin/sh: root: command not found

按照网上各种方法试过之后发现还是报一样的错。 因此笔者将/var/spool/cron/root 文件删除掉,重新设定时任务,竟然神奇地可以正常执行了。原理还没想通,不过至少可以正常执行了….



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3