一、一次性调度执行
一次性调度执行 at
Schedule one-time tasks with at.
语法格式:at <时间格式>
示例:
now +5min 现在的时间+5分钟
Teatime tomorrow(teatime is 16:00) 明天下午茶时间,16点
Noon +4days noon中午,4天后的中午。
5pm august 3 2029 2029年8月3日下午5点。
4:00 2019-11-27
设置一个定时创建用户的任务
at now +3min
At > useradd userAt
Ctrl+d输入完成,提交任务
查询任务
atq
验证结果
到了时间就id一下,出来了就对了。
二、循环调度执行
循环调度执行 cron
Schedule recurring jobs with cron.
在开始cron之前,需要先查看它的进程状态。
Crond程序运行是计划任务执行的根本。
ps aux | grep crond
正常来说,都是正常自启的。所以不用担心。
cron示例
计划任务存储位置:
ls /var/spool/corn/
一会我们的计划写好了,就存在这里。管理方式:
创建计划:
Crontab -e
-e edit jobs for the current user.
会进入一个类似记事本。这里面就可以编辑计划
操作和vim一致。查询计划:
Crontab -l
-l list the jobs for the current user.
管理员可以使用-u username,去管理其他用户的计划任务。删除计划:
Crontab -r
-r remove all jobs for the current users.语法格式job format:
* * * * *
command
每个*都代表了具体含义,都是代指的时间。
第一个:分钟minute(0-59)
第二个:小时hours(0-24)
第三个:天数(1-31)
第四个:月份(1-12)
第五个:周(0-6)
Command:命令或脚本程序就是分时日月周 命令或脚本程序
六个部分用空格隔开示例:
*/5 * * * *
/mysql_back.sh 每5分钟执行一次/mysql_back.sh
0 2 1,4,6 * *
/mysql_back.sh 每月的第1,4,6天的2点整执行/mysql_bash.sh
0 2 5-9 * *
/mysql_back.sh 每月第5到9天的2点整执行/mysql_bash.sh
* * * * *
/mysql_back.sh 每分钟执行/mysql_back.sh
0 * * * *
/mysql_back.sh 每小时0分执行/mysql_back.sh
0 2 * * *
/mysql_back.sh 每天2点执行/mysql_back.sh
0 2 14 2 *
/mysql_back.sh 每年的2月的14天2点执行/mysql_back.sh
0 2 * * 5
/mysql_back.sh 每周五2点执行/mysql_back.sh
0 2 2 6 5
/mysql_back.sh 6月的第二天执行一次/mysql_back.sh,且每周五的2点执行一次/mysql_back.sh
00 02 * 6 5
/mysql_back.sh 6月的每周五2点执行一次/mysql_back.sh
00 02 14 * 7
/mysql_back.sh 每个月的14号及每周天执行一次/mysql_back.sh日和周的关系是且的关系,如果都存在就都执行。
其实大多时候都不写周的,除非不按照日期来安排计划任务。当任务计划执行之后,会发送一封邮件到执行用户的邮箱:
可以直接mail查看邮件:
q退出。没有mail命令的,可以直接去/var/spool/mail/用户查看