Linux菜鸟成长日记 (Linux 延时任务,定时任务, 临时文件管理。at , crontab,systemd-tmpsfile)

 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/file1            以上述对临时文件的配置文件规定的周期创建指定的文件1,2

 touch /mnt/test/file2



可看到/mnt下建立了对应的目录,和目录中的文件


 systemd-tmpfiles --clean /usr/lib/tmpfiles.d/test.conf

 systemd-tmpfiles --clean /usr/lib/tmpfiles.d/test.conf    

以同样周期清除临时文件可看出,系统会按照一定的周期去处理临时文件,先清除先生成的临时文件,后生成的到了处理周期后,再次执行才会清除。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值