1. 一次性调度执行
schedule one-time tasks with at
.【至少在lubuntu 20.04上已经没有了,Windows已经deprecated了】
$ at <timespec>
# <timespec>示例
# now + 5min
# teeeatime tomorrow (teatime is 16:00)
# noon + 4days
# 5pm august 3 2029
# 4:00 2019-11-27
$ at now +1min
at> useradd uuuu
at> <EOT> # Ctrl+D,这是结束输入
# 查询任务
$ atq
2. 循环调度执行
schedule recurring jobs with cron
.
和crontab
一起使用,该命令从标准输入设备读取指令,并将其存于“crontab”文件中,以供之后读取和执行。执行周期循环命令。
basil@basil-2020:~/$ systemctl status cron.service # 查看cron程序运行情况
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-01-08 09:31:04 CST; 5h 55min ago
Docs: man:cron(8)
Main PID: 531 (cron)
Tasks: 1 (limit: 4431)
Memory: 1.5M
CGroup: /system.slice/cron.service
└─531 /usr/sbin/cron -f
1月 08 13:17:01 basil-2020 CRON[1623]: pam_unix(cron:session): session opened for user root by (uid=0)
1月 08 13:17:01 basil-2020 CRON[1623]: pam_unix(cron:session): session closed for user root
- 创建计划
crontab -e
Edit jobs for the current user.
这将会使用vim格式的编辑器去创建任务。
格式* * * * * command
。分时日月周,命令*
:第一个minute(0-59),第二个hour(0-23),第三个day of month(1-31),第四个month(1-12),第五个day of week(0-6) OR sun, mon, tue, wed, thu, fri, sat
命令最好写绝对路径。
示例:
5 * * * * /mysql_back.sh # 每年每月每日每小时的第5分钟执行。
*/5 * * * * /mysql_back.sh # 每隔5分钟执行。*/<num> 每隔多长时间做什么事情。
0 2 1,4,6 * * /mysql_back.sh # 每年每月的1,4,6日2点整执行。
0 2 5-9 * * /mysql_back.sh # 每年每月的5~9日2点整执行。
* * * * * /mysql_back.sh # 1分钟执行一次。
0 * * * * /mysql_back.sh # 每年每月每日每小时整执行。
0 2 * * * /mysql_back.sh # 每年每月每日2时整执行。
0 2 14 * * /mysql_back.sh # 每年每月14日2时整执行。
0 2 14 2 * /mysql_back.sh # 每年2月14日2时整执行。
0 2 * * 5 /mysql_back.sh # 每年每周五2时整执行。
一般不会全写,分时日月周,如果全写了则“分时日月”是一定执行一次,而该月每周“周”执行一次。
00 02 * * * ls # 每年每月每日2时整执行一次
00 02 l * * ls # 每年每月1日2时整执行一次
00 02 l4 2 * ls # 每年2月14日2时整执行一次
00 02 * * 7 ls # 每年2月每周日2时整执行一次
00 02 * 6 5 ls # 每年6月每周五2时整执行一次
00 02 14 * 7 ls # 每年每月每周日2时整执行一次,每年每月14日2时整执行一次
00 02 14 2 7 ls # 每年2月每周日2时整执行一次,每年2月14日2时整执行一次
- 查询计划
crontab -l
List the jobs for the current user.
root用户可以使用-u username
来管理其它用户的计划任务。 - 删除计划
crontab -r
Remove all jobs for the current user.