8. Linux 任务计划

时间:2023-02-13 19:05:21

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

108 13:17:01 basil-2020 CRON[1623]: pam_unix(cron:session): session opened for user root by (uid=0)
108 13:17:01 basil-2020 CRON[1623]: pam_unix(cron:session): session closed for user root
  1. 创建计划
    ​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时整执行一次
  1. 查询计划
    ​crontab -l​​ List the jobs for the current user.
    root用户可以使用-u username来管理其它用户的计划任务。
  2. 删除计划
    ​crontab -r​​ Remove all jobs for the current user.