经验丰富的系统运维工程师可以使得Linux在无需人为介入的情况下,在指定的时间段自动启用或停止某些服务或命令,从而实现运维的自动化。
计划任务:
- 一次性计划任务
at
- 长期性计划任务(周期性)
crontab
1、一次性计划任务
可以理解为布置作业,布置只需完成一次的作业。
at类命令的服务名为atd,可以使用命令systemctl status atd
查看atd服务是否启动
执行脚本存放在 /var/spool/at/
-
使用相对时间执行命令
at now +1 min
-
使用绝对时间执行命令
at 12:00
-
查看待处理的作业
at -l
-
删除无用的作业
atrm 1
-
根据作业ID查看执行细节
at -c 1
-
作业的时间格式
at 13:00 2020-02-26
【绝对时间】
at now +10min/hour/day
【相对时间】
at 12:00 tomorrow
【明天12点】
at 6:00 pm + 5 day
【5天后的下午6点】
at 23:00 < task.txt
【在23点执行】 -
Ctrl+D
保存并退出当前作业,作业进入待执行状态。 -
实例
2、周期性计划任务
可以理解为布置周期性的作业,每个周期的固定时间都要完成一次作业
linux内置了cron进程,服务名为crond,而crontab是cron table的简写,是cron进程的配置文件,也叫作业列表。
/var/spool/cron/
目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
/etc/crontab
这个文件负责调度各种管理和维护任务。
/etc/cron.d/
这个目录用来存放任何要执行的crontab文件或脚本。
我们还可以把脚本放在/etc/cron.hourly
、/etc/cron.daily
、/etc/cron.weekly
、/etc/cron.monthly
目录中,让它每小时/天/星期、月执行一次。
由于crond服务是系统内置的,我们无需配置,可通过systemctl status crond
查看该服务是否启动。
-
创建作业
作业格式:分 时 日 月 周 命令 【每一个作业都必须有这6个部分(时间5+动作1)】
作业要求:在crond服务的计划任务参数中,所有命令都必须以绝对路径的方式来写。可用whereis 命令
查询命令的绝对路径。
取值范围:
分:0-59
时:0-23
日:1-31
月:1-12
周:0-7
【0和7都是星期天】
书写形式:
*
所有时间
/n
每隔n时间
-
从几到几
,
单独去一部分时间
实例:
* * * * * mywork
【每分钟】
1,3 * * * * mywork
【每小时的第1和第3分钟】
1,3 8-12 * * * mywork
【每天的上午8-12点的第1和第3分钟】
1,3 8-12 */2 * * mywork
【每隔两天的上午8-12点的第1和第3分钟】
1,3 8-12 * * 1 mywork
【每周一的上午8-12点的第1和第3分钟】
* 23-7/1 * * * mywork
【每天晚上23点到第二天上午7点,每隔1小时】
具体实验:
①crontab -e
进入vim编辑器,一行表示一个周期性作业,可以布置多个周期性作业。
-
查看作业
crontab -l
-
删除某个作业可以使用
crontab -e
命令进入文本编辑器,将对应的作业去掉。 -
清空作业
crontab -r