Linux 延时任务,定时任务,
临时文件管理。at , crontab,systemd-tmpsfile
在linux系统的学习工作中,难免会遇到需要延迟进行的任务和需要定时去完成的任务,就像手机的闹钟一样,这时候就需要用到系统当中的系统延迟和定时任务的设置了,下面为大家介绍一下系统延时任务和定时任务。
1.延迟任务
通过 at 命令对系统进行延时任务下达。
在shell下执行: at + 时间,后回车,输入要执行的任务。
例如:以创建文件为例
at now+5min
>touch /mnt/file{1..10}
>ctrl+d 执行
为了查看定时任务的执行,可通过watch命令来进行监测。
执行watch -n1 ls /mnt
可以通过 :at -l 列出系统延时任务
at -c 2 查看任务2的详情
at -r 2 关闭系统延时任务
为了避免出现不必要的麻烦,可以对执行 at 任务的用户进行限定。
修改配置文件,对可执行at命令的用户进行限定。
/etc/at.deny 黑名单
/etc/at.allow 白名单(出现后,黑名单失效,除白名单内用户和root外均不可执行at)
man 5 at.deny
2.定时任务
延时任务只会执行一次,有时会用到经常执行的任务,这时候就需要crontab来进行定时任务设置。
关于此任务的具体命令模版,在/etc/crontab中保存着
可以通过 man 5 crontab 来查看定时任务的相关信息
介绍了crontab的基本用法及例子:
minute — 分钟,从 0 到 59 之间的任何整数
hour — 小时,从 0 到 23 之间的任何整数
day — 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)
month — 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)
dayofweek — 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)
command — 要执行的命令(命令可以是 ls /proc >> /tmp/proc 之类的命令,也可以是执行你自行编写的脚本的命令。)
在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。
整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。
用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。
正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2可 以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。
也可以通过 man 5 crontab 来查看定时任务的相关信息
下面也介绍了crontab的基本用法及例子:
常用指令如下:
crontab -u root -e 新建任务 -u 指定用户(若不指定则为当前用户)
crontab -u root -l 列举任务
crontab -u root -r 删除任务
crontab 的任务源文件,用户机的crontab/var/spool/cron/
"/<number>" #每隔多长时间
分钟 小时 天 月 周 + 命令
* * * * *
*/2 08-17 * * *
*/2 08-17 * * *
示例如下:执行crontab -u root -e
编辑定时命令:
查看任务列表:
watch -n1 查看任务是否执行:
如同延时任务一样
修改配置文件,对可执 crontab 命令的用户进行限定。
/etc/cron.deny 黑名单
/etc/cron.allow 白名单(出现后,黑名单失效,除白名单内用户和root外均不可执行crontab)
上述为用户级别的定时任务
/etc/cron.*/ 系统级别的定时任务 在这些目录下建立,无法用crontab -l 进行查看
在指定目录下进行对用时刻的用户定时任务创建
指定用户,若不指定则为当前用户
/etc/cron.d/ 自定义定时任务类型目录
/etc/cron.monthly/ 用户每月定时任务目录
/etc/cron.weekly/ 用户每周定时任务目录
/etc/cron.daily/ 用户每天定时任务目录
/etc/cron.hourly/ 用户每小时定时任务目录
/etc/cron.deny cron用户黑名单
在对应目录下建立对应类型的定时任务。
例如在/etc/cron.d/目录下建立脚本文件,执行定时任务
建立脚本文件,并让其权限为644,不然会出现问题而无法执行。
编辑脚本文件,具体和crontab相同,加上执行任务的用户
3.临时文件管理
临时文件存在于在下载、安装/卸载软件时,浏览网页时,在线观看视频时,收发电子邮件时,用QQ传输文件时……但在通常情况下,大部分的临时文件可谓“来也匆匆.去也匆勿”,许多创建临时文件的程序,在完成任务后会“自动地”将其删除,有些临时文件是在系统重新启动之后自行消失。但有些脸皮厚的程序,还是会将自己留下的东西保留
/usr/lib/tmpfiles.d/ 系统临时文件的配置文件的目录
vim test.conf 新建临时文件的配置文件d /mnt/test 1777 root root 5s
类型 目录 权限 用户名 用户组 操作周期
执行 systemd-tmpfiles --create /usr/lib/tmpfiles.d/test.conf 创建指定临时文件指定的文件目录
touch /mnt/test/file2
可看到/mnt下建立了对应的目录,和目录中的文件
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/test.conf
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/test.conf
以同样周期清除临时文件可看出,系统会按照一定的周期去处理临时文件,先清除先生成的临时文件,后生成的到了处理周期后,再次执行才会清除。