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

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

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

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

      crontab -lSHELL=/bin/bash0 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 ]; thenecho "$PROJECTNAME  is  running  and pid=$pid"kill -9 $pidecho "Start success to start $PROJECTNAME ...."nohup java -jar UseAndUnuseData.jar  >> catalina.out  2>&1 &
elseecho "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 设置的定时任务没有启动的排查相关推荐

  1. linux fedora35设置双系统开机启动顺序

    linux fedora35设置双系统开机启动顺序

  2. Linux系统 设置 cockpit 自动开机启动时异常问题处理(设置systemctl enable cockpit 异常【解决办法】)

    Linux系统 设置 cockpit 自动开机启动时异常问题处理 问题系统: Centos7 Fedora29 RedHat7 systemctl enable cockpit 时,会出现如下错误: ...

  3. (转载)linux如何设置为低内核启动(降核)

    CentOS 6 系统更改内核启动顺序方法: 1.查看编辑/etc/grub.conf 文件 vim /etc/grub.conf 2.在grub.conf文件中决定开机使用哪个内核版本做启动的参数是 ...

  4. linux如何更改默认内核,[linux 内核] 设置内核的默认启动版本

    1. 查看当前默认启动内核 [root@localhost yangkun]# grub2-editenv list saved_entry=CentOS Linux, with Linux 3.10 ...

  5. linux crontab 执行php定时任务的巨坑和如何查看定时任务执行结果

    首先crontab是有执行日志的,但是里面的日志报错都是一些状态码根本看不懂,谷歌一番后发现如果想查看定时任务执行结果可以这样写 */120 * * * * php /usr/share/nginx/ ...

  6. linux远程设置crontab,Linux 设置定时任务crontab命令

    1.crontab命令概念 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. cron 系统调 ...

  7. python 定时任务好 还是crontab_使用python crontab设置linux定时任务

    熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务.可以通过命令crontab -e编写任务.当然也可以直接写配置文件设置任务. 但是有时候希望通过脚本自动设置,比如我们应用 ...

  8. linux 下设置定时任务

    Linux Crontab 定时任务 命令详解 在工作中需要数据库在每天零点自动备份所以需要建立一个定时任务.我选择在Linux下使用Crontab来添加定时任务执行shell文件.shell文件有数 ...

  9. Linux crontab 定时任务命令详解

    Linux Crontab 定时任务 命令详解 [日期:2016-02-13] 来源:Linux社区 在工作中需要数据库在每天零点自动备份所以需要建立一个定时任务.我选择在Linux下使用Cronta ...

最新文章

  1. JSP内置对象基础知识小结
  2. 谷歌又放大招:视觉效果完胜其他SOTA的风格迁移网络,手机端可达实时4K
  3. 【渝粤教育】国家开放大学2018年春季 0004-22T有机合成单元反应 参考试题
  4. Java异常分类及处理
  5. java两种绑定方式_Javascript绑定事件的两种方式的区别
  6. 通过使用阿里云+vuepress快速搭建静态个人博客网页页面
  7. 键盘指示灯亮着 按键全部失效了怎么办
  8. 【编程开发】之国家代号与电话区号
  9. 单片机中断原理及定时器详解
  10. PCI、PCIe、PCI BIOS概念介绍
  11. matplotlib learning-----案例:对比电影的票房收入(3)
  12. Linux命令——parted
  13. 简单几行代码带你爬取王者荣耀皮肤
  14. 计算机主机拆装注意事项,电脑硬件拆装前要注意什么 拆装电脑的注意事项
  15. Sublime Text 3 使用心得(转)
  16. 使用vscode利用vue脚手架创建项目每次修改代码都会频繁编译
  17. iOS 各版本系统占比
  18. Layui的eleTree树式选择器使用
  19. 数据库 (基础数据库知识 )
  20. android 文档api

热门文章

  1. c++ 获取linux系统信息_linux系统c程序移植
  2. php 类定义抽象方法吗,PHP面向对象:接口与抽象方法
  3. Oracle中PLSQL中一个例外的写法
  4. amd为什么还用针脚_为什么intel处理器不用针脚,AMD还一直使用针脚呢?
  5. java中将date插入mysql中date_JAVA 处理时间 - java.sql.Date、java.util.Date与数据库中的Date字段的转换方法[转]...
  6. [深度学习基础] 5. 实现细节
  7. 批处理中setlocal enabledelayedexpansion的作用详细整理
  8. sscanf,sprintf,fscanf,fprintf 系列函数
  9. 中国电信发布转型升级战略:构建一横四纵生态圈
  10. linux下svn迁移