一、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、路径和权限问题
检查命令中操作的文件是否存在,路径是否完整,并且当前用户是否有操作该文件的权限,如果没有权限则要赋予权限或者更换用户。