crontab定时任务不执行的解决方法


一、crontab基础知识

安装crontab

yum -y install vixie-cron

或者

yum -y install crontabs

vixie-cron 软件包是 cron 的主程序;

crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

crontab相关命令

service crond start //启动服务 
service crond stop //关闭服务 
service crond restart //重启服务 (Centos7下为systemctl restart crond)
service crond reload //重新载入配置
service crond status //查看状态
chkconfig crond on //设置开机自动启动crond服务:
chkconfig –list crond //开机级别的crond服务运行情况 ,2、3、4、5级别开机会自动启动crond服务 
chkconfig crond off//取消开机自动启动crond服务

crontab执行的脚本:(两种)

1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
crontab -e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务
crontab -l //列出当前的所有调度任务 
crontab -l -u jp //列出用户jp的所有调度任务
crontab -r //删除所有任务调度工作

2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。 

CentOS系统中把crontab加入开机自动启动:

chkconfig --level 345 crond on

cron任务运行的环境变量

1、SHELL:变量的值指定系统使用的SHELL环境(该样例为bash shell),
2、PATH:变量定义了执行命令的路径。
3、MAILTO: Cron的输出以电子邮件的形式发给MAILTO变量定义的用户名。如果MAILTO变量定义为空字符串(MAILTO=""),电子邮件不会被发送。
4、HOME: 执行命令或脚本时HOME变量可用来设置基目录

crontab 格式

分钟   小时   日   月   星期   命令

*        *      *    *     *       *

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字

二、crontab定时任务不执行的解决方法

1、确认服务器是否开启定时任务计划服务,只有root用户才能对crontab服务进行开启和关闭

service crond status

确保状态是running

2、时差问题问题

用date命令看一下服务器的时间,如果服务器与客户端有时差,crontab的时间以服务器时间为准。因此时差不一致导致crontab不执行的话,解决方法如下:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
service crond restart

3、路径和权限问题

检查命令中操作的文件是否存在,路径是否完整,并且当前用户是否有操作该文件的权限,如果没有权限则要赋予权限或者更换用户。

标签: ,

文章发布时间:2019-11-15