一.什么计划任务?
概念:就是需要在将来的某个时间点,按照我们的指令执行已经计划好的工作。目前最主要的用途是定期备份数据。
分类:一次性调度计划任务 at
循环调度计划任务 cron
二.一次性调度计划任务at
语法格式:at + 时间 ....
时间示例:now +5min 五分钟后
teatime tomorrow 明天的下午茶(4:00)时间
noon +4days 第四天中午
5pm august 3 2029 2029年八月三号下午5点
4:00 2027-9-2 某年某月某日某时
实例演示:设置定时创建用户的任务
at>后面写要执行的操作,回车写下一个操作,若果操作写完ctrl +d 提交任务(上面我们执行了一个2分钟后创建用户的操作)
atq命令:用于查看当前存在的计划任务,一旦计划任务执行,atq就查不出东西了
id jizhe 可以看到当前没有用户jizhe
2分钟后(说明我们的计划任务执行成功)
三.循环调度执行计划任务cron
crontab命令:是一个命令常见与linux和unix系统中,用于设置被周期性执行的指令。
原理:从终端获取指令,存放在/etc/crontab文件中,以备后续读取执行。
查看cron程序的状态:systemctl status crond
ps -aux |grep crond
cron程序详解:
1.计划任务存储的位置?(看当前存在的计划任务)
ls /var/spool/cron/
2.管理方式?
crontab -e #:创建计划任务
crontab -e (Edit) for the current user #基于用户的,当前是root建立的计划任务。
crontab -l #:查询计划任务
crontab -l (List) the jobs for the crruent user
#管理员可以 -u 用户名 指定查看其他用户的计划任务
crontab -r #:移除计划任务
crontab -r (Remove) all jobs for the current users
3.语法格式
[root@localhost ~]# crontab -e #就会进入一个文件,然后在里面编写计划任务
* * * * * command 或者脚本 #这是格式,五个*从前到后一直代表 分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(中间要有一个空格)
5 6 7 5 * 就代表五月七日六点五分执行
5 5 3 * * 就代表每月的三号五时五分执行
5 7 * * * 就表示每天七点五分执行
5 * * * * 每个小时的五分钟都执行
* * * * * 每分钟都执行
*/5 * * * * 每隔五分钟执行一次
*/5 * * * * /ls/usr/bin /home #每隔五分钟执行/usr/bin/ls /home ,(要写绝对路径)
就会每隔五分钟发一个邮件,里面显示ls的结果内容
例子二: 0 2 1,4,6 * * #每月的一号四号六号的两点零分都执行 (注意*之间用空格分隔 1,4,6 就算一个整体,逗号表示或的意思)
例子三:0 2 5-9 * * 每月的五号到几号的两点零分执行 # :-表示什么到什么的意思
例子四:0 * * * * 每月每日每小时的零分(就是整点)执行
例子五:0 2 * * *每月每日两点零分执行
例子六:0 2 14 * *每月14号 的两点整执行
例子六:0 2 14 2 * 每年的二月14号的两点整执行一次
注意现在带着周看一些例子
0 2 * * 5 #就是周五的2点整执行。(如果有周,不写月日,月日就不生效)
0 2 2 6 5 #6月的2号的两点执行,然后六月的每个星期五执行一次(就是取并集),这个不常用,一般都是分 时 日月 或者 分 时 星期的形式
0 2 * 6 5 #就是六月的星期五的两点整执行。
0 2 14 * 7 #每个月的14号两点和星期天的两点执行(一共五次)
4.实例演示:每一分钟都创建文件的计划任务
第一步编写一个脚本文件:vim 1.sh
给1.sh加上可执行权限
chmod +x 1.sh
第二步:编写计划任务
crontab -e
#:表示每分钟执行1.sh这个脚本
crontab -l 就可以看到当前的计划任务
第三步:查看结果ls /root/
说明:可以看到文件已经创建成功