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

转载 2018年04月17日 16:04:15

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来运行,若可以正常运行再另做判断。
  • 1
  • 2

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/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
  • 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 文件删除掉,重新设定时任务,竟然神奇地可以正常执行了。原理还没想通,不过至少可以正常执行了….

版权声明:本文大部分为博主原创,转载请注明出处。 https://blog.csdn.net/u013850277/article/details/54344805

来源:https://blog.csdn.net/u013850277/article/details/54344805

用linux中的crontab进行定时启动、清理任务

定时执行
  • qq_35461287
  • qq_35461287
  • 2017-02-20 14:58:53
  • 1511

如何启动定时任务crontab?

crontab 启动 依赖 crontabs包和 crond服务, crond服务使用的crontab定义的命令 因此需要: service crond start    (有的是servic...
  • Aaroun
  • Aaroun
  • 2017-12-25 15:02:22
  • 348

对于crontab定时任务不能自动执行的总结

最近遇到了一些sh不能在crontab定时任务中自动执行的问题 期间由于不太了解,故走了一点弯路,现在总结下来可能第一次 进行设置遇到的问题。以绝后患!我所用过的操作系统为HP-unix&linu...
  • god123209
  • god123209
  • 2012-08-10 10:32:29
  • 13238

授权普通用户Linux crontab定时任务

项目需求,在Linux下做个定时任务,而且是普通用户下可控的。网上找资料,方向没找对,就暂时用root用户做定时任务。最后听别人说用sudo,才有了这篇文章。 下面就说一下方法: 1. 创建任务(普...
  • dahangg
  • dahangg
  • 2016-01-18 16:43:36
  • 3979

linux定时任务不自动运行

需求背景:自己搭建了个hadoop的虚拟机分布式集群环境,需要定时进行时钟同步,以保证集群内的机器时间是同步的。 设计:利用linux的定时任务crontab命令,不断定时从时钟服务器同步时间 实...
  • wenxindiaolong061
  • wenxindiaolong061
  • 2017-10-27 17:53:07
  • 570

linux 下设置定时任务 crontab命令

定时向ntp服务进行时间同步,并记录日志 首先,建立一个日志文件: [root@icnote ~]#touch /var/log/upClock.log   //建立更新log文件 [root...
  • u013516966
  • u013516966
  • 2016-01-20 17:57:52
  • 1669

linux 计划任务crontab,定时打开一个图形界面

crontab经常遇到的问题是 针对上述问题总结如下设置crontab的步骤 simvision是cadence ncverilog仿真工具的一个波形查看命令,是一个图形界面。 因为simvisio...
  • u011729865
  • u011729865
  • 2017-02-01 14:35:40
  • 925

crontab定时任务不执行的原因

我在网上找的时候发现网上主要说了这5个原因: 1 crond服务未启动 crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止。如果停止了就无法执行任...
  • u011734144
  • u011734144
  • 2017-01-16 18:35:20
  • 32156

利用CRONTAB自动定时执行任务(ARM-LINUX)

本人的项目中,应为系统的需要,需要在嵌入式环境下,实现开机自启动定时运行脚本/程序,以实现自动化。一开始是利用while 循环与 sleep 实现定时执行命令,而在了解到crond这一机制后,发现自己...
  • qq_26282629
  • qq_26282629
  • 2018-01-09 16:29:33
  • 141

crontab定时任务脚本不执行,日志无执行记录

在linux下用crontab启动定时脚本,放到crontab中死活没反应,这是可能的原因: 1、看日志,cat /var/log/cron。如果日志中有执行记录可能是脚本没有执行权限,此时要赋予执...
  • week_ed
  • week_ed
  • 2017-10-10 22:04:55
  • 2605
收藏助手
不良信息举报
您举报文章:Linux Crontab 设置的定时任务没有启动的排查
举报原因:
原因补充:

(最多只允许输入30个字)