Linux下排查定时任务无法启动

来源:互联网 发布:com域名续费多少钱 编辑:程序博客网 时间:2024/05/22 10:28

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

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

    命令:service crond status         service crond start
  • 1
  • 2

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

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

4、 查看crontab执行记录

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

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

tail -f /var/log/cron
  • 1

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

tail -f /var/spool/mail/root
  • 1

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

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

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

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

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

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

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

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

source /etc/profile添加后脚本整体如下#!/bin/bashsource /etc/profilePROJECTNAME=UseAndUnuseDatapid=`ps -ef |grep $PROJECTNAME |grep -v "grep" |awk '{print $2}'`if [ $pid ]; then    echo "$PROJECTNAME</span>  is  running  and pid=<span class="hljs-variable">$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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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

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

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

/bin/sh: root: command not found
  • 1

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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华硕电脑com端口没有怎么办 淘宝子账号认证过于频繁怎么办 现在手机淘宝卖家怎么办 注册新的淘宝账户怎么办 淘宝账号被限制买东西了怎么办 淘宝账号被冻结了怎么办 淘宝买的手机坏了怎么办 淘宝账户被限制登录怎么办 美团退款申诉失败怎么办 微信申诉不回来怎么办 特岗登录名忘记了怎么办 天猫账号被限制怎么办 微信双开被限制登录怎么办 云服务显出账号已过期怎么办 全国对讲机显示账号过期怎么办 淘宝账号身份证过期了怎么办 清理垃圾软件打打不开怎么办 电脑清理后软件打不开了怎么办 手机黑屏开不了机怎么办 红米手机wifi打不开怎么办 苹果8开不开机怎么办 mac电脑打不开机怎么办 steam改密码上限了怎么办 qq加密了登不了怎么办 别人登我的淘宝怎么办 植物2被禁止登录怎么办 淘宝网东西未收到怎么办 淘宝网卖家不许退货退款怎么办 身份证以前开过淘宝店怎么办 支付宝登录名尚未激活怎么办 淘宝退货卖家不收货退款买家怎么办 淘宝账号刷得太多违规怎么办 闲鱼交易关闭了怎么办 淘宝店开了没做怎么办 微店店铺严重违规怎么办 淘宝违规扣2分怎么办 淘宝被扣6分怎么办 淘宝被扣2分怎么办 淘宝被海关扣了怎么办 淘宝被扣36分后怎么办 淘宝售假查封店铺资金怎么办