Linux的定时执行任务是cron服务实现的。
crontab是一个命令,该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。
而crond正是它的守护进程。cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务。
-
写一个要定期执行的shell脚本
-
配置cron服务,实现定期执行任务【图出处链接】
例如:
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
crond定时方式的配置
方式1:vim /etc/crontab
在最后一行加上定时任务的配置
修改crontab的配置后需要重启crontab,使配置生效
/bin/systemctl restart crond.service
方式2:直接用crontab -e
,进入一个类似于vim的编辑界面,不需要指定用户,如果是root权限,默认是root定时的
如果cron是启动的状态,crontab -e
配置后保存退出,会出现如下的提示:
脚本定时执行配置完成,执行结果如下:
在shell脚本中写的重定向的路径/home/shell_dir/下生成aaa.txt文件
注意:CentOS7 上的 cron相关命令和 CentOS6上的cron命令不一样。
详见:linux下定时重启tomcat 【CentOS 6.4】【CentOS 7.6】
一.cron任务的自启动相关命令
- 检测cron定时服务是否自启用
systemctl is-enabled crond.service
enable表示已启用自启动
disable标识未启用自启动
- 如果未启用,则开启cron自启用
systemctl enable crond.service
- 如果已经启用,想要cron关闭自启动
systemctl disable crond.service
二.cron服务是否启动相关命令【区别于自启动】
1.查看cron服务的启动状态
systemctl status crond.service
2.启动cron服务[命令没有提示]
systemctl start crond.service
3.停止cron服务[命令没有提示]
systemctl stop crond.service
4.重启cron服务[命令没有提示]
systemctl restart crond.service
5.重新加载cron服务[命令没有提示]
systemctl reload crond.service
三. crontab 相关命令
crontab -u
//设定特定用户的定时服务
crontab -l
//列出当前用户定时服务内容
crontab -r
//删除当前用户的定时服务
crontab -e
//编辑当前用户的定时服务
四.查看定时任务的执行日志
tail -f -n 10 /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定时任务仍不执行,考虑是否是时区问题:
正确的时区应该是
CST
如果你的时区是
UTC
可以修改服务器时区
上述部分内容来自博客【https://www.cnblogs.com/sxdcgaq8080/p/10730633.html】
感谢博主分享,很有收获!