Linux定时计划任务管理详解
什么是定时任务
定时任务就像闹钟一样,闹钟是你设定一个时间,到点响铃。Linux下的定时任务就是你设定一个时间,
到点执行你需要执行的命令或者脚本。在我们LINUX中,我们可以通过crontab和at这两个东西来实现这些功能
注:计划任务的作用:是做一些周期性的任务,在生产中的主要用来定期备份数据
只执行一次的定时任务命令 — at
at 计划任务的使用
语法格式: at 时间 ;服务:atd
[root@zcy1~]# systemctl start atd #开启 atd 服务
[root@zcy1 ~]# systemctl status atd #查看 atd 服务状态
[root@zcy1 ~]# systemctl is-enabled atd #查看是否开始开机启动服务,如果弹出 enabled,
说明开机启动此服务
实战----使用at创建计划任务
查看用at命令执行的定时任务
删除at定时任务
at 计划任务的特殊写法
[root@ zcy ~]# at 20:00 2018-10-1 #在某天
[root@ zcy ~]# at now +10min #在 10 分钟后执行
[root@ zcy ~]# at 17:00 tomorrow # 明天下午 5 点执行
[root@ zcy ~]# at 6:00 pm +3 days # 在 3 天以后的下午 6 点执行
循环定时任务——crontab
crond 命令定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作
cron 是一个 linux 下的定时执行工具,可以在无需人工干预的情况下运行作业。
linux 任务调度的工作主要分为以下两类:
系统执行的工作:系统周期性所要执行的工作,如备份数据,日志定期切割,收集系统状态信息,/tmp 定期清理
启动 crond 服务
[root@zcy ]# systemctl start crond
[root@zcy ]# systemctl enable crond
crontabl 命令参数介绍:
crontab 的参数:
crontab -u hr #指定 hr 用户的 cron 服务
crontab -l #列出当前用户下的 cron 服务的详细内容
crontab -u mk -l #列出指定用户 mk 下的 cron 服务的详细内容
crontab -r #删除 cron 服务
crontab -e #编辑 cron 服务
例如:
crontab -u root -l # root 查看自己的 cron 计划任务
crontab -u san -r # root 想删除 san 的 cron 计划任务
crontab -e 编辑时的语法
特殊符号的含义
符号 | 说明 | 示例 |
---|---|---|
* | 代表取值范围的数字 | 任意/每 |
/ | 指定时间的间隔频率 | */10 0-23/2 |
- | 代表从某个数字到某个数字 | 8-17 |
, | 分开几个离散的数字 | 6,10- 13,20 |
实战----使用crontab配置定时任务
每天凌晨 2 点 1 分开始备份数据
实战案例汇总
实战-常见的计划任务写法和案例
常见写法:
每天晚上 21:00 重启 apache
0 21 * * * /etc/init.d/httpd restart
每月 1、10、22 日的 4 : 45 重启 apache。
45 4 1,10,22 * * /etc/init.d/httpd restart
每月 1 到 10 日的 4 : 45 重启 apache。
45 4 1-10 * * /etc/init.d/httpd restart
每隔两天的上午 8 点到 11 点的第 3 和第 15 分钟执行 apach
3,15 8-11 */2 * * /etc/init.d/httpd restart
晚上 11 点到早上 7 点之间,每隔一小时重启 apach
0 23-7/1 * * * /etc/init.d/apach restart
周一到周五每天晚上 21:15 寄一封信给 root@panda:
15 21 * * 1-5 mail -s “hi” root@panda < /etc/fstab
互动:crontab 不支持每秒。 每 2 秒执行一次脚本,怎么写?
在脚本的死循环中,添加命令 sleep 2 ,执行 30 次自动退出,然后添加,计划任务:
‘* * * * * /back.sh