Linux定时及延时任务

一、定时任务:永久
        延时任务:一次性
    监控命令           watch -n 1   ls    -lR    /mnt    (l ==longer ;R==递归)
二、延时任务命令:at(存在内存中,关机清空)
1.at hh:mm | at now+1min
at>   ...
at>    <crtl+d> 开始执行
at  -l   ##列出所有延时任务
at  -c  job 号    ####查看某个任务的详细信息
at  -r  job 号    ####取消某个任务

操作:

[root@localhost ~]# at now+1min                ##一分钟后
at> touch /mnt/file{1..5}                                ##建立文件
at> <EOT>                                                   ##ctrl+d 执行命令
job 1 at Tue  Oct 23 09:41:00 2018         ##一分钟后是09:41:00运行
[root@localhost ~]# at  -l                   
[root@localhost ~]# at 09:42                 ##在09:43时刻
at> rm -fr /mnt/file{1..5}                     ##删除文件
at> <EOT>                                            ##ctrl+d 执行命令
job 2 at Tue  Oct 23 09:43:00 2018
[root@localhost ~]# at -l                      ##查看任务内容的编号
2    Tue Oct 23 09:43:00 2018 a root   
[root@localhost ~]# at -c 2                    ##查看任务详细内容
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0

[root@localhost ~]# at -r 2             ##取消job2任务 

2.黑名单/etc/at.deny:本身存在。加入谁,谁不可执行;其他人都可以
  白名单/etc/at.allow:本身不存在,有了白名单,则黑名单失效。加了谁,只有他和root可以执行;其他都不可以

测试:黑名单中加linux

          

     白名单加linux,黑名单失效,只有白名单和root可做延时任务

               

    
三、定时任务
1.服务:chronyd.service(开启)
2.用户级定时任务
crontab -e -u 用户            ###添加某用户的定时任务

 分钟  小时    天     月     周      /bin/touch /mnt/file{1..3}       ##执行命令地址
   *          *      *       *      *              ##每月每周每天每小时每分钟
   */2       *      *       *      *       ##每月每周每天每小时每分钟2次
   */2  08-17   *       *      *       ##每月每周每天8:00-17:00每分钟2次
  */2  08-17   1,15   *      *      ##每月,每周,1和25号,8:00-17:00每分钟2次
  */2  08-17   1,15   3-5   *     ##3到5月,每周,1和25号,8:00-17:00每分钟2次
  */2  08-17   1,15   3-5   3     ##3到5月的1和25号以及每周3,8:00-17:00每分钟2次


  crontab -l            ###列出定时任务
  crontab -r -u 用户            ###删除该用户的所有定时任务
3.任务存放地址:/var/spool/cron/用户
4.黑名单/etc/cron.deny:本身存在。加入谁,谁不可执行;其他人都可以
  白名单/etc/cron.allow:本身不存在,有了白名单,则黑名单失效。加了谁,只有他和root可以执行;其他都不可以
5.系统级定时任务
 vim /etc/cron.d/xxx
 * * * * *  用户  命令
cat /etc/cron.d/xxx  查看  crontab -l看不了
cat /etc/crontab 看编辑格式
/etc/cron.d/0hourly 里设定了/etc/cron.hourly里的东西每整点执行

操作:

[root@foundation68 ~]# cd  /etc/cron.d       ##切换到cron.d
[root@foundation68 cron.d]# ls                     ##查看这个目录下的文件
0hourly  raid-check  sysstat
[root@foundation68 cron.d]# cat 0hourly      ##设定了/etc/cron.hourly里的东西每整点执行
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly         ##编写这个格式的命令
[root@foundation68 cron.d]# vim westos

                            *   *   *   *   *   root touch /mnt/file{1..5}   ##整分过1秒执行

四、临时文件管理(linux系统不卡顿原因)
1.系统会每天零点过一分时对未使用临时文件进行清理(--clean命令)。当电脑关闭时,定时任务不执行,在开机时,crond.service 服务开启状态里面的anaron服务对未执行的定时任务立即执行
2.正在使用临时文件存放位置:/usr/lib/tmpfiles.d
  它里面的.conf文件里记录着临时文件生成策略:
   类型  绝对路径   权限   所有人   所有组  子文件在系统存活时间
systemd-tmpfiles --create /usr/lib/tmpfiles.d/*   ###读取/usr/lib/tmpfiles.d/下所有配置文件的要求,按照要求执行
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*    ###读取/usr/lib/tmpfiles.d/下所有配置文件的要求,按照要求删除临时文件目录中的过期文件
注:以上命令也是定时任务

实验步骤:   
监控:watch -n 1 ls -R /mnt/ -l
cd   /usr/lib/tmpfiles.d
vim  westos.conf                   ##.conf是临时文件后缀
     d /mnt/westos 1777 root root 5s          ##5秒后创建或删除
systemd-tmpfiles --create /usr/lib/tmpfiles.d/*        ##创建临时文件
touch  /mnt/westos/file                                   ##5s前创建
touch  /mnt/westos/file1                                ##5s中创建
systemd-tmpfiles  --clean  /usr/lib/tmpfiles.d/*           ##删除临时文件

ls  /mnt/westos                                 ##只有file1
注意:配置文件中生成的文件夹不会被删除,但是文件夹内的文件会被清空

猜你喜欢

转载自blog.csdn.net/msm05138240/article/details/83315913