简介
什么是计划任务
我们作为运维工程师,免不了要定时的去执行一些系统命令,当这些命令需要在夜间执行的时候,就会让我们非常的难受。因此,为了解决这一痛点,我们引入了Linux计划任务。在Linux系统中,主要有两种执行计划任务的方式, 一种是仅执行一次,我们常用at来实现,另一种是执行一些周期性任务,我们使用crontab来实现
at
我们一般用at命令来执行需要定时执行的,一次性的这种任务,比如说,我需要在早晨7点的时候,重启我的nginx,首先,在终端输入at 7:00,之后输入systemctl restart nginx,然后按Ctrl+d来提交这个任务
如果说我们想要查看我们设置的定时任务,可以使用at -l命令,最左面一列代表的是任务的id,如果想要删除,可以使用at -d $id
at有两个配置文件,一个是/etc/at.deny,一个是/etc/at.allow,这两个配置文件是用来对用户做限制的,例如/etc/at.deny中存在用户test,那么test用户就没有权限执行at命令,当/etc/at.deny和/etc/at.allow同时存在test时,at.allow的优先级要高一些,此时,用户test则可以使用at命令
crontab
Linux中,我们常用crontab来执行一些周期性的命令,先来看下crontab命令常用的一些选项:
crontab -l 查看计划任务
crontab -e 编辑计划任务
crontab -u 指定用户
接下来我们看一看crontab的配置文件,cat /etc/crontab
在最下面一行,我们可以清楚的看到crontab的标准格式,在最前面的五个*分别代表了分、时、日、月、周,相应的在配置文件中也给出了解释,分的取值范围是0-59,时的取值范围是0-23,日的取值范围是1-31,月的取值范围是1-12或者使用英文月份来指代,周的取值范围是0-7,其中0和7都代表周日,或者使用英文,我们举几个简单的例子来说明一下:
1、每半小时执行一次b.sh脚本
*/30 * * * * /bin/sh /root/b.sh
2、每周一的晚上7点执行b.sh脚本
0 19 * * 1 /bin/sh /root/b.sh
3、每个月10号到12号,在晚上的7点到8点,每隔半小时执行一次b.sh脚本
*/30 7,8 10-12 * *