第一阶段:云计算基础
Linux系统配置及服务管理_第10章_计划任务
简介
作用: 计划任务主要是做一些周期性的任务,目前最主要的用途是定期备份数据。
分类
- 一次性调度执行 at
• Schedule one-time tasks with at.
- 循环调度执行 cron
• Schedule recurring jobs with cron.
一次性调度执行 at
语法格式
- 语法格式
• at <TIMESPEC>
- <TIMESPEC>示例
• now +5min
• 5分钟后
• teatime tomorrow (teatime is 16:00)
• 下午茶时间
• noon +4 days
• 第四天中午
• 5pm august 3 2029
• 2020年8月3日下午5点
• 4:00 2019-11-27
• 某年某月某日某时
例1
- 初识一次性任务计划
- 1.设置一个定时创建用户的任务
• [root@localhost ~]# at now +1min
• at> useradd uuuu
• at> <EOT>
• CTRL+D输入完毕,提交任务
• job 1 at Sat Mar 21 22:34:00 2019
- 2.查询任务
• [root@localhost ~]# atq
• 3 Thu Mar 30 09:55:00 2019 a root
- 3.验证结果
• [root@localhost ~]# id uuuu
• 查出用户信息即可
循环调度执行 cron
简介
- cron的概念和crontab是不可分割的。
- crontab是一个命令,常见于Unix和Linux的操作系统之中
- 用于设置周期性被执行的指令。
- 该命令从标准输入设备读取指令,并将其存放于“/etc/crontab”文件中,以供之后读取和执行。
查看进程状态
- [root@qianfeng ~]# systemctl status crond.service
- [root@qianfeng ~]# ps aux |grep crondroot
- 550 0.0 0.0 126300 1648 ? Ss 10:05 0:00 /usr/sbin/crond -n
- crond程序运行是计划任务执行的根本
cron示例
- 计划任务存储位置
• [root@localhost ~]# ls /var/spool/cron/
- 管理方式
• 创建计划
• crontab -e
Edit jobs for the current user
• 查询计划
• crontab -l*
List the jobs for the current user
• 管理员可以使用 -u username, 去管理其他用户的计划任务
• 删除计划
• crontab -r Remove all jobs for the current users.
- 语法格式 Job format
• # .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * command
• 说明
• 分 时 日 月 周 命令或脚本程序ls
• 六个部分用空格隔开
• 示例1
• 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日的两点整执行
• * * * * * /mysql_back.sh
• 每分钟执行
• 0 2 * * * /mysql_back.sh
• 每天两点整执行
• 0 2 14 * * /mysql_back.sh
• 每月14号的2点整执行
• 0 2 14 2 * /mysql_back.sh
• 2月14日2点整执行
• 0 2 * * 5 /mysql_back.sh
• 不写月日,仅周生效
• 每月的周五,两点执行
• 0 2 2 6 5 /mysql_back.sh
• 书写月和日,月或日,月日周均生效
• 6月2日的两点整执行
• 6月的周五两点整执行
• 示例2
• 00 02 * * * ls
• 每天2:00整
• 00 02 1 * * ls
• 每月1号2:00整
• 00 02 14 2 * ls
• 每年2月14号2:00整
• 00 02 * * 7 ls
• 每周日2:00整
• 00 02 * 6 5 ls
• 每年6月的周五2:00整 (特殊)
• 00 02 14 * 7 ls
• 每月14号2:00整
• 每周日2:00整
• 这两个时间都执行
• 00 02 14 2 7 ls
• 每年2月14号2:00整
• 2月每周日2:00整
• 这两个时间都执行
- 示例
• 目的
• 每个一分钟执行创建文件的计划任务
• 步骤
• 1.准备创建脚本文件
• # vim /root/1.sh
• 输入以下内容
• /usr/bin/touch /root/`date +%F-%H-%M-%S`.txt
• #chmod +x /root/1.sh
• 2.编写任务计划
• #crontab -e
• 输入以下内容
• * * * * * /root/1.sh
• 3.查看创建结果
• #ls -l /root/