系统延时及定时任务

时间:2022-02-14 16:20:40

一:系统延时任务

*延时任务是临时的

1.at命令

at +time ##在time时间后执行命令
at>命令##延迟的动作
at>##ctrl+d发起动作
1分钟后在桌面建立一个file文件
系统延时及定时任务

at -l | atq #查看当前任务
系统延时及定时任务
at now+5min #延时5分钟
atrm | at -d +任务号 #取消指定任务
at -c +任务号 #查看任务内容
5分钟后在桌面创建一个file文件
系统延时及定时任务
查看该任务后取消该任务
系统延时及定时任务
系统延时及定时任务
at -f file #延时执行文件中的内容(文件不是脚本)
1分钟后执行文件file的内容
系统延时及定时任务
file文件内容:
系统延时及定时任务
at -m #延时命令没有输出时仍然发送邮件给执行者
at -M #延时命令即使有输出也不发送邮件给执行者

2.at命令的执行权力设定
/etc/at.deny (直接在文件中写用户名) ##用户黑名单,黑名单中的用户不能执行at命令
/etc/at.allow ##用户白名单,默认不存在,一旦存在,黑名失效,只允许白名单的用户执行at命令
*不能设置root用户的权限,在root用户下仍然可以执行
将student用户拉入黑名单,在/etc/at.deny里添加student,student不能执行at命令
系统延时及定时任务
将student用户加入白名单/etc/at.allow,student可执行at命令,说明白名单优先级高于黑名单
系统延时及定时任务

二:定时任务

定时任务是永久的

**定时任务程序crond,在系统中每分钟做一次任务扫描

发起方式:

发起方式一

1>crontab -u username -e ##username用户建立定时任务(默认所有用户都可以执行)
此命令会进入一个文本,该文本的编写方式:
分 时 天 月 周 + 命令(必须写绝对路径)
这些设置会写入/var/spool/cron/root文件中
crontab -u username -l ##查看某用户的定时任务
crontab -u username -r ##删除某用户的定时任务(该用户的所有定时任务删除)
root用户在桌面建立file文件,用watch -n 1 ls -lR /root/Desktop监控
系统延时及定时任务
系统延时及定时任务
2>vim /var/spool/cron/root ##root用户的定时任务,只能填写一个用户
分 时 天 月 周 + 用户 + 命令 (必须写绝对路径)
* * * * * root touch /mnt/file ##表示每分钟在/mnt目录下建立一个文件file
08:21在/mnt下建立file文件
系统延时及定时任务
系统延时及定时任务
系统延时及定时任务

发起方式二

1.vim /etc/cron.d/filename 创建一个文件并在里面填写,此文件可以填写多个用户
填写方式:
分 时 天 月 周 + 用户 + 命令
* * * * * root touch /mnt/file ##表示每分钟在/mnt目录下建立一个文件file

设置root和student用户在08:45分别建立file1{a..c}和file2{a..c}6个文件,具体设置及watch的监控结果如下:
系统延时及定时任务
系统延时及定时任务
系统延时及定时任务
时间表示方法
1 2 3 4 5 + 命令(五个必须全写)
1 —- 分钟
2 —- 小时
3 —- 天
4 —- 月
5 —- 周
上述数字填写范围
* —- 每(如每分钟)
1(分钟) —- 0-59
2(小时) —- 0-23
3(天) —- 1-31
4(月) —- 1-12
5(周) —- 0-7 (0和7都表示星期天)
例:* * * * * 表示每分钟都执行一次
系统延时及定时任务

2.crontab命令的执行权力设定
/etc/cron.deny (直接在文件中写用户名) ##用户黑名单,此名单中的用户不能执行crontab命令
/etc/cron.allow ##用户白名单,默认不存在,一旦存在,黑名单失效,只允许白名单的用户执行crontab命令

**不能设置root用户的权限,在root用户下仍然可以执行crontab

三:系统中的临时文件管理

系统中服务在正常运行时会产生临时文件
在系统中 /usr/lib/tmpfiles.d/ 目录下存放
系统的临时文件配置是: /usr/lib/tmpfiles.d/filename.conf
自己创建的临时文件配置文件必须以.conf结尾
临时文件配置的编写方式是:
文件类型 文件名 文件权限 文件所有人 文件所有组 文件存在的时间
d 文件名|目录(绝对路径) 777 root root 10s
##创建临时目录,并且十秒内目录中的内容不能被删除

 systemd-tmpfiles --create  /usr/lib/tmpfiles.d/filename.conf  ##执行临时文件配置,生成配置文件中的临时目录或文件(文件名与绝对路径无关,名字可随意设定)
 systemd-tmpfiles --clean  /usr/lib/tmpfiles.d/filename.conf##清理临时文件

编写脚本,在/mnt下创建demo临时文件目录,要求demo中的文件1min清理一次,但必须存在2min

vim /bin/clean.sh
#!/bin/bash

echo “d /mnt/demo 777 root root 2min” > /usr/lib/tmpfiles.d/demo.conf ##配置临时文件
chmod 777 /mnt/demo
systemd-tmpfiles –create /usr/lib/tmpfiles.d/demo.conf ##生成临时文件
touch /mnt/demo/file{1..3}
echo “* * * * * root systemd-tmpfiles –clean /usr/lib/tmpfiles.d/demo.conf” > /etc/cron.d/demo##定时清理临时文件