计划任务
简介
计划任务主要是做一些周期性的任务,
目前最主要的用途是定期备份数据。
计划任务相当于闹钟
什么时候需要使用定时任务
企业工作中经常需要将某些命令或脚本放入计划任务中自动执行;企业中需要定期执行服务器之间的数据同步操作;
Linux中怎样使用计划任务
在Linux中有两种使用方法:
一次性at计划任务 :Schedule one-time tasks with at.
周期性执行cron计划任务(常用) :Schedule recurring jobs with cron.
一次性调度执行at
语法:at < TIMESPEC>
< TIMESPEC >示例 :
[root@localhost~]# at now +5min
五分钟后
[root@localhost~]# teatime tomorrow (teatime is 16:00)
下午茶
[root@localhost~]# noon +4 days
第四天中午
[root@localhost~]# 5pm august 3 2020
2020年8月3日下午5点
[root@localhost~]# 4:00 2019-11-27
某年某月某日某时
- 示例
设置一个定时创建用户的任务
[root@localhost ~]# at now +1min
at> useradd www
at> <EOT> CTRL +D 输入完毕,提交任务
job 3 at Wed Aug 5 20:34:00 2020
查询任务
[root@localhost ~]# atq 查询 -q
3 Wed Aug 5 20:34:00 2020 a root
验证
root@localhost ~]# id www
uid=1008(www) gid=1008(www) 组=1008(www)
循环调度执行cron
- 简介
cron的概念和crontab是不可分割的。
crontab是一个命令,常见于Unix和Linux的操作系统之中
用于设置周期性被执行的指令。
该命令从标准输入设备读取指令,并将其存放于“/etc/crontab”文件中,以供之后读取和执行。 - 查看进程的状态
[root@locahost ~]# systemctl status crond.service
[root@localhost ~]# ps aux |grep crond
root 550 0.0 0.0 126300 1648 ? Ss 10:05 0:00 /usr/sbin/crond -n
crond程序运行是计划任务执行的根本
- cron的示例
1.管理方式
(1)创建计划
“crontab -e” Edit jobs for the current user
(2)查询计划
“crontab -l” List the jobs for the current user
管理员可以使用 -u username, 去管理其他用户的计划任务
(3)删除计划
“crontab -r” Remove all jobs for the current users.
2.计划任务存储位置
[root@localhost ~]# ls /var/spool/cron/
3.语法格式 Job format
分 时 日 月 周 | 命令活脚本程序 |
---|---|
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月的周五两点整执行 |
示例
分 时 日 月 周 | 命令或脚本程序 |
---|---|
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.准备创建脚本文件
[root@localhost~]# vim /root/1.sh
输入以下内容 /usr/bin/touch /root/`date +%F-%H-%M-%S`.txt
[root@localhost~]#chmod +x /root/1.sh
2.编写任务计划
[root@localhost~] # crontab -e
输入以下内容
* * * * * /root/1.sh
3.查看创建结果
[root@localhost~] # ls -l /root/