linux计划任务
让命令在未来的某个时间点去执行,相当于QQ上发送定时说说、定时开关机。
一次性调度执行at
Schedule one-time tasks with at:定时执行一次之后就不再去执行了。
语法格式
at在执行的时候可以有很多的说法,因为它的时间可以不一样。
at 时间
- 示例:定时创建用户的任务
给计算机命令行时间
at now +2min
输入在未来的时间要做的事情
at> useradd user01
按下Ctrl + D键输入完毕,提交任务。
可以按下atq
查看任务完成了没有
at这个命令在很多系统中都可以去执行。
循环调度执行cron
Schedule recurring jobs with cron:定时的反复执行某个任务
cron的概念和crontab是分不开的。crontab是一个命令,常见于unix和linux的操作系统图中,用来设置周期性被执行的指令,该命令从标准输入设备读取指令,并将其存放于crontab文件中,以便于之后的读取和执行。
语法格式
crond程序的运行是计划任务执行的根本条件,所以要查看crond程序的状态。
- 查看进程的状态
systemctl status crond.service
这个服务正在运行。
ps aux | grep crond
- cron示例
查看计划任务存储的位置
ls /var/spool/cron
创建一个计划
crontab -e
//edit jobs for the current user
在命令行中按下这条命令后,会跳进一个记事本程序,这时可以在这个记事本中编写很多条语句。
# 编写形式* * * * * command
# 分 时 日 月 周 命令或者脚本程序
# 第一个*代表的是分 minute
# 第二个*代表的是小时 hour
# 第三个*代表的是天 day
# 第四个*代表的是月 month
# 第五个*代表的是周 week
# 在每一年的3月的15号1点15分执行
5 1 15 3 * /mysql_back.sh
# 注意:*代表的任意的时间
# 在每天的1点5分执行
5 1 * * * /mysql_back.sh
# 在一小时的5分执行
5 * * * * /mysql_back.sh
# 如果是每隔5分钟去执行呢?
*/5 * * * * /usr/bin/ls /tmp
# 以此类推,重要的是这5颗*号不可以缺少
# 在每月的1,4,6号2点整去执行这条命令
0 2 1,4,6 * * /usr/bin/ls /tmp
# 在每月的5号到9号的的2点整执行命令
0 2 5-9 * * /usr/bin/ls /tmp
# 每月的每天的每小时的每分钟都在执行
* * * * * /usr/bin/ls /tmp
# 0代表的是0分钟,是每月每日每小时的零分执行,而不是每分钟。
0 * * * * /usr/bin/ls /home
# 每天的2点0分执行
0 2 * * * /mysql_back.sh
# 每月的14号的2点0分执行
0 2 14 * * /mysql_back.sh
# 每年的2月14号2点0分执行
0 2 14 2 * /mysql_back.sh
# 这一段表示的是每周5的2点0分执行,一般不写星期,一般的都是月 日 时 分搭配或者是周 时 分搭配,通常不都写上去。
0 2 * * week:5 /mysql_back.sh
# 如果5个星号都写上去了,那么取这两个条件的交集,所以是6月的2号2点0分执行一次和6月的每周的星期5的2点0分执行一次,总共是5次
0 2 2 6 5 /mysql_back.sh
# 每天的2点整执行
00 02 * * * ls
# 每月的1号的2点整执行
00 02 1 * * ls
# 每年2月14号2点整执行
00 02 14 2 * ls
# 每周日2点整执行
00 02 * * 7 ls
# 6月的星期5的2点整执行
00 02 * 6 5 ls
# 每一个月的14号2点整执行一次还有就是每个月的星期天执行一次,总共5次
00 02 14 * 7 ls
# 2月的14号2点整和2月的星期天执行
00 02 14 2 7 ls
这时会给你发邮件,每隔一段时间就执行命令,再将执行的结果通过邮件的形式发送给你,可以使用mail命令去查看邮件。
可以按下数字去查看邮件的内容
这就是成功了,按下q退出邮件页面。
查询创建的计划
crontab -l
//list the jobs for the current user
管理员可以使用-u username去管理其他用户的计划任务
删除一个计划
crontab -r
//remove all jobs for the current user.