前言
计划任务主要是做一些周期性的任务,目前最主要的用途是定期备份数据
分类:
一次性调度执行 at
循环调度执行 crontab
一次性调度执行 at
顾名思义适合一次性任务处理
at使用
语法格式:at {执行时间}
常见时间 | 表示 |
---|---|
now +5min | 5分钟后 |
teatime tomorrow (teatime is 16:00) | 下午茶时间 |
noon +4 days | 第四天中午 |
5pm august 3 2024 | 2024年8月3日下午5点 |
4:00 2024-11-27 | 某年某月某日某时 |
示例
[root@localhost ~]# yum -y install at #使用yum安装at,并开启服务与at服务系统自启动。
[root@localhost ~]# systemctl start at #开启服务
[root@localhost ~]# systemctl enable at #开启系统自启动
[root@localhost ~]# at now +1min #启动at
warning: commands will be executed using /bin/sh
at> useradd user03 #输入计划useradd user03
at> <EOT> #CTRL+D完成退出
job 4 at Sat Jun 10 15:35:00 2023
[root@localhost ~]# atq #查看计划
4 Sat Jun 10 15:35:00 2023 a root
[root@localhost ~]# id user03 #验证
用户id=1002(user03) 组id=1002(user03) 组=1002(user03)
循环调度执行 crontab
crontab是linux中的周期计划任务服务,通过编写实现定时计划执行任务。
该命令从标准输入设备读取指令,并将其存放于“/etc/crontab”文件中,以供之后读取和执行。
crontab 基础使用
crontab -e #创建计划
crontab -l #查看计划
crontab -r #删除计划
ls /var/spool/cron/ #计划任务存储位置
语法格式 Job format
* * * * * command
每个*从左到右分别代表 分 时 日 月 周 命令或脚本程序
理解示例1
Command | 表示 |
---|---|
0 * * * * /mysql_back.sh | 每小时0分执行 |
*/5 * * * * /mysql_back.sh | 每五分钟执行 |
0 2 1,4,6 * * /mysql_back.sh | 每月1、4、6号2点整执行 |
0 2 5-9 * * /mysql_back.sh | 每月5-9号2点整执行 |
* * * * * /mysql_back.sh | 每分钟执行 |
0 2 * * * /mysql_back.sh | 每天2点整执行 |
0 2 14 * * /mysql_back.sh | 每月14号2点整执行 |
0 2 14 2 * /mysql_back.sh | 每年2月14号2点整执行 |
0 2 * * 5 /mysql_back.sh | 每周五2点整执行(不写日月,则按周执行) |
0 2 2 6 5 /mysql_back.sh | 每年6月周五的2点整执行 和 每年6月2号2点整执行 |
理解示例2
Command | 表示 |
---|---|
00 02 * * * ls | 每天2点整执行 |
00 02 1 * * ls | 每月1号2点整执行 |
00 02 14 2 * ls | 每年2月14号2点整执行 |
00 02 * * 7 ls | 每周日2点整执行 |
00 02 * 6 5 ls | 每年6月的每周五2点整执行 |
00 02 14 * 7 ls | 每年的周日2点整执行和每月14号2点整执行 |
00 02 14 2 7 ls | 每年2月14号2点整 和 2月每周五2点整执行 |
小练:
计划任务在11月份,每天早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh怎么实现?
实验
目的:每个一分钟执行创建文件的计划任务
vim 1.sh #创建一个脚本
#内容如下
/usr/bin/touch /root/`date +%F-%H-%M-%S`.txt
#1.sh脚本内容结束
chmod +x /root/1.sh #给文件添加执行权限
crontab -e #编写周期计划
#内容如下
* * * * * /root/1.sh
* #计划内容结束
ls /root/ #查看结果