Linux入门之定时任务和延时任务

我们有时候会发现系统常常会主动的执行一些任务,那么我们该怎样让系统自动执行我们所设定的任务?我们又怎样让系统提示自己在某个重要时刻要做的事情?这些对于任务的设置,让我们一起来看看吧!

一、定时任务

要使用单一计划任务时,也就是定时任务,我们的Linux系统上面必须要有负责这类计划任务的服务,那就是atd服务。不过并非所有的linux发行版都默认启动,所以,某些时刻我们需要自己启动。

systemctl start atd            ##开启atd服务
systemctl enable atd           ##开机启动

1. 定时任务的创建 

我们可以使用at这个命令来产生所要运行的任务,并将这个任务以文本文件的方式写入/var/spool/at目录内,该任务便能等待atd这个服务的使用与执行了。

at 9:00                    ##在该时间执行的任务
>touch /mnt/file{1..3}      ##使用ctrl+d可以结束输入  
at now+1min                 ##设置1分钟后执行定时任务

 建立一个对目录的监控方便我们查看任务是否执行【watch -n 1 ls -l /mnt/*】

 

2. 定时任务的管理 

at -l                       ##查看已设定的定时任务
at -c 序列号                ##查看该序列号的定时任务
at -r 序列号                ##删除该序列号的定时任务

3. 定时任务黑白名单

系统默认会保留一个定时任务黑名单,我们可以在里面添加用户。默认情况下,所有用户都可以创建定时任务。

 工作流程:

第一步:先找寻/etc/at.allow这个文件,写在这个文件中的用户才能使用at,没有在这个文件中的用户则不能使用at(即使没有写在at.deny中)。

第二步:如果/etc/at.allow不存在,就查找/etc.deny这个文件,写在这个at.deny中的用户则不能使用at,没有在这个at.deny文件中的用户,就可以使用at。

第三步:如果两个文件都不存在,那么只有root可以使用at这个命令。

(1)用户黑名单 

​vim /etc/at.deny          ##黑名单,名单中的用户不能使用定时服务

(2)用户黑名单 

vim /etc/at.allow         ##白名单,名单中的用户可以使用
## at.allow文件存在时,at.deny不生效

一般情况下,用户白名单是不存在的,需要创建touch /etc/at.allow

二、延时任务

cron设备管理必须定期重复运行的程序。后台程序crond每分钟唤醒一次,以运行计划的任何任务,用户使用crontab命令计划个人任务。系统管理员可以在系统范围配置文件中设置任务 单个用户使用称为 crontab(cron表)的文本文件登记任务。

当用户使用crontab这个命令来建立计划任务之后,该项任务就会被记录到/var/spool/cron中,而且是以账号来作为判断根据的。

1. 延时任务的创建和管理 

crontab -e -u root          ##创建延时任务
## 在文件中输入  * * * * * touch /mnt/file{1..10}   ##时刻创建文件
crontab -l -u root          ##列出已有的任务
crontab -r -u root          ##删除任务
cat /var/spool/cron/root    ##查看某一用户的延时任务

在我们做实验时可以建立一个监控,方便我们查看实验效果【watch -n 1 ls -l /mnt/*】 

 注意:每项任务都具有六个字段,这六个字段分别代表:

代表意义分钟小时日期月份命令
数字范围0~590~231~311~120~7需要执行的命令

其中,比较特殊的是周,周的数字为0或7时,都代表星期天

特殊字符代表意义
*(星号)每时每刻
,(逗号)分隔时段
-(减号)一段时间范围内
/n(斜线)每隔n单位间隔

2. 延时任务黑白名单

(1)延时任务黑名单 

vim /etc/cron.deny  ##在名单中的用户不能使用crontab

root用户可以指定普通用户创建延时任务,但该用户自己不能使用
在超级用户身份下给某一用户指定延时任务crontab -e -u tom

(2)延时任务白名单 

vim /etc/cron.allow  ##在名单中的用户可以使用
注意:cron.allow文件存在,则cron.deny不生效

三、自动执行延时任务

当命令过多时,可创建一个命令执行目录
vim westos
在westos文件中输入:
* * * * * root run-parts /westos    ##run-parts 自动执行指定目录
mkdir /westos                       ##执行目录
vim /westos/test.sh                 ##自动执行的脚本
在test.sh文件中输入:
#!bin/bash
touch /mnt/file{1..3}               ##执行的语句

 当我们需要执行的任务过多时,由于每项任务都有六个字段,多个任务,在书写时比较麻烦且容易出错,我们通过对其他自动执行文件的学习,了解了一些自动执行延时任务书写格式,通过这些例子,我们可以将我们所需要执行的任务放到一个目录中,执行任务时,系统会根据指定的目录,进行任务自动的执行。

我们在指定目录中创建一个自动执行脚本,可以使它自动执行,由于该脚本的权限中没有执行权利,我们需要手动添加执行权限,如果不加执行权限,等到明天它也不会有反应。

四、系统定期清理临时文件管理方式

我们的系统每天都会帮我们做一些工作,这些工作都是自动执行的。比如说自动的执行在线更新、自动的做日志文件分析等。这是由于系统要正常运行 的话,某些后台的任务必须要定时执行。那么我们该怎样也创建一个可以让系统定时定期执行的文件?

监控: watch -n 1 ls -lR /mnt/
cd /usr/lib/tmpfiles.d/             ##切换到自动执行目录
vim westos.conf                     ##在该目录下,创建自动执行的文件
d /mnt/westos 777 root root 10s       ##创建的文件10s后会被清理
systemd-tmpfiles --create /usr/lib/tmpfiles.d/*  ##系统自动执行该目录下的文件
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*   ##清理过期的文件
touch /mnt/westos/file1
我们会发现,未过期的文件,使用clean命令不会被清理,过期后,会被清理

建立监控,观察文件的变化【watch -n 1 ls -lR /mnt/】 

 我们在指定目录创建文件,这些文件在创建后的10s会过期,观察系统会不会帮我们清理过期文件,由于使我们自己创建的文件,我们需要让系统识别这些文件,识别之后,使用清理命令,系统会将过期文件自动清除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值