linux 定时任务
一. cron任务的自启动相关命令
- 检测cron定时服务是否自启用
systemctl is-enabled crond.service结果展示如下:
enable表示已启用自启动
disable标识未启用自启动 - 如果未启用,则开启cron自启用systemctl enable crond.service
- 如果已经启用,想要cron关闭自启动systemctl disable crond.service
附录:linux系统自带服务的启动文件和状态
二. cron服务是否启动相关命令【区别于自启动】
-
查看cron服务的启动状态[只有cron的状态是active running的,才表示cron服务是启动的]
systemctl status crond.service
-
启动cron服务[命令没有提示]
systemctl start crond.service -
停止cron服务[命令没有提示]
systemctl stop crond.service -
重启cron服务[命令没有提示]
systemctl restart crond.service -
重新加载cron服务[命令没有提示]
systemctl reload crond.service
三.操作定时任务
-
定时任务的编辑
crontab -e
编辑内容和centos6;一样。表示每天7.30执行 /mnt/apps/tomcat/tomcat.sh 路径下的脚本
30 07 * * * /mnt/apps/tomcat/tomcat.sh
如果在上面,已经把定时任务cron启动了,编辑定时任务后,会有提示
-
查看已编辑的定时任务
crontab -l
-
删除已编辑的所有定时任务
crontab -r
四.查看定时任务的执行日志
- 查看cron执行日志
tail -f -n 200 /var/log/cron
五.最后总结如上述命令,整个cron操作步骤如下
1>编辑了.sh脚本,并保存,记录.sh文件所在路径【一定确保.sh脚本可用,可以尝试在编辑完成.sh文件后,直接./tomcat.sh 执行脚本文件,查看是否可以正常执行】
2>查看并设置cron为自启动
3>查看并启动cron服务,使状态为running
4>编辑并查看cron服务,注意路径和定时格式,确保cron服务编辑成功
5>最后在编辑完成cron服务后,重新加载或重启cron服务,确保cron服务状态是running的6>最后可以通过查看cron执行日志,确保cron是否执行
7>如果cron任务不执行,确保linux服务器系统 时间 和时区 是否正常
六.cron任务不执行,问题排查
如上,已经确保 第五点中所有 步骤都正确执行了。但是cron定时任务一直没有执行。
我这里出现的原因,是因为服务器的时区设置不正确。
正确的时区应该是
CST
如果你的时区是
UTC
或者其他,就导致时间和时区不正确。
我设置的定时任务是17.05执行,结果等到了17.05,定时任务不执行,因为此刻的系统时间是05.05
解决方法:
timedatectl set-timezone Asia/Shanghai
看看crontab 的时间表达式基本格式 :
1、每分钟执行一次
* * * * *
2、每隔一小时执行一次
00 * * * *
or
* */1 * * * (/表示频率)
3、每小时的15和45分各执行一次
15,45 * * * * (,表示并列)
4、在每天上午 8- 11时中间每小时 15 ,45分各执行一次
15,45 8-11 * * * command (-表示范围)
5、每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 command
6、每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command