Linux系统延迟及定时机制

来源:互联网 发布:技嘉主板怎么样 知乎 编辑:程序博客网 时间:2024/05/16 08:02

计划定期任务

   at命令可以指定某一任务在将来的特定时间运行。该作业可能是一次备份、对您系统的检查或者特定时间发送的通知。那些需要花费很长时间才可完成的作业正适合at命令。仅需使用 at 命令将任务设置为在一分钟或两分钟之后运行。然后您便可以安全注销 , 因为该任务会在与 shell 会话断开连接的情况下运行   at命令必须指定任务应运行的时间。该指定可以是具体时间或日期,也可以是当前时间的相对时间。  在键入 at 命令行之后 , 按 Enter 并继续键入作业中包含的其他命令。任务可由多个命令组成。在完成键入要运行的命令时 , 在单独出现的一行按Ctrl+d 完成任务 

at命令的基本用法:

at  -l                       #列出延迟任务id    -r           任务id       #删除此id的任务    -m                       #让无输出的命令产生邮件    -M                       #让有输出的命令不产生邮件    -c           任务id       #查看此id的延迟任务的执行动作    -f            文件        #用文件内记录的命令作为延迟任务的执行命令
[root@wutuxing ~]# date          Tue Oct 31 11:53:33 GMT 2017[root@wutuxing ~]# at 11:55at> echo hello worldat> <EOT>                     #   ctrl+djob 1 at Tue Oct 31 11:55:00 2017[root@wutuxing ~]# at -l1   Tue Oct 31 11:55:00 2017 a root[root@wutuxing ~]# mailHeirloom Mail version 12.5 7/5/10.  Type ? for help."/var/spool/mail/root": 1 message 1 new>N  1 root    Tue Oct 31 11:55  14/501   "Output from your job "& 1                #输入1,查看邮件1的内容Message  1:From root@wutuxing.example.com  Tue Oct 31 11:55:01 2017Return-Path: <root@wutuxing.example.com>X-Original-To: rootDelivered-To: root@wutuxing.example.comSubject: Output from your job        1To: root@wutuxing.example.comDate: Tue, 31 Oct 2017 11:55:00 +0000 (GMT)From: root@wutuxing.example.com (root)Status: Rhello world& quit                 #quit退出Held 1 message in /var/spool/mail/rootYou have mail in /var/spool/mail/root

这里写图片描述

[root@wutuxing ~]# at now+1minat> cd /mntat> <EOT>job 3 at Tue Oct 31 12:15:00 2017[root@wutuxing ~]# at -l3   Tue Oct 31 12:15:00 2017 a root[root@wutuxing ~]# mailHeirloom Mail version 12.5 7/5/10.  Type ? for help."/var/spool/mail/root": 1 message>   1 root                  Tue Oct 31 11:55  15/512   "Output from your job "&                           #上一个任务并没有产生邮件
[root@wutuxing ~]# at -m now+1minat> cd /mntat> <EOT>job 5 at Tue Oct 31 12:20:00 2017[root@wutuxing ~]# at -l5   Tue Oct 31 12:20:00 2017 a root[root@wutuxing ~]# mailHeirloom Mail version 12.5 7/5/10.  Type ? for help."/var/spool/mail/root": 2 messages 1 new    1 root                  Tue Oct 31 11:55  15/512   "Output from your job ">N  2 root                  Tue Oct 31 12:20  13/489   "Output from your job "& 2                     #这里出现了mail文件Message  2:From root@wutuxing.example.com  Tue Oct 31 12:20:00 2017Return-Path: <root@wutuxing.example.com>X-Original-To: rootDelivered-To: root@wutuxing.example.comSubject: Output from your job        5To: root@wutuxing.example.comDate: Tue, 31 Oct 2017 12:20:00 +0000 (GMT)From: root@wutuxing.example.com (root)Status: R& 

这里写图片描述

at命令的使用控制

默认系统中全部用户
都有执行at命令的权力,那么如何设定at命令的黑白名单呢?

用户黑名单

默认情况下,系统中是存在用户黑名单的,这个名单的路径

/etc/at.deny      ##用户黑名单,此名单默认为空,并且在白名单不存在时生效vim /etc/at.denystudent     ##student使用at命令的权力被禁止

这里写图片描述

at命令的白名单

默认系统中是不存在at的白名单的
但是当白名单出现,系统用户除名单中出现的用户以及root
其他用户均不能执行at命令

touch /etc/at.allow   #建立用户白名单,当白名单出现,黑名单失效

这里写图片描述

2 cron

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

crontab 注意事项
• 属于系统的任务通常保存在 /etc/crontab 文件中而不是使
用 crontab -e 编辑保存在个人文件中。更好的做法是用文
本编辑器创建 crontab 文件并保存到 /etc/cron.d 中 ( 避
免更新系统软件包 cronie 时出现问题 ) 。
/etc/cron.d/crontab 文件在日期说明后另加一个字段 , 表
示将运行作业的用户
• 对于需要每天、每周或每月运行一次的脚本 , 可以直接将其
设置为可执行文件 , 并保存在/etc/cron.{daily,weekly,monthly}
中相应目录下。这些任务由/etc/anacrontab 配置的系统 anacron
服务运行 anacron是 cron 的集成组件 , 用于更好地管理作业 ,
并确保在作业因计算机关闭而未运行的情况下 , 在系统引导后
运行作业

2.1 cron

1)这个程序是由crond.server 提供的,我们可以先看看电脑里这个服务是否开启。

这里写图片描述

2)写入程序的时间和事件是永久保存的

2.2 cron设定方式

方法一
crontab -e -u 用户名称(可以不写)
这里写图片描述

crontab -l  #列出当前用户的cron任务crontab -r  #删除当前用户的cron任务/var/spool/cron/*  ##cron任务记录文件存放位置

这里写图片描述

这里写图片描述

2.3 cron的黑白名单

默认情况下,系统中只存在黑名单,当白名单被建立,黑名单失效

黑名单

/etc/cron.deny   ##在此名单中的用户不能执行crontabvim /etc/cron.denystudent           ##student用户不能执行crontab

我们可以看到/etc/cron.deny是默认存在的,我们编辑这个文件,添加了xixi这个用户,表明限制xixi这个用户在这台电脑上使用crontab的权力,而没有在黑名单里的haha依然可以使用crontab。
注意:在切换用户的时候应该先退回到root用户再进行切换。

这里写图片描述

白名单
默认情况下,系统中只存在黑名单,当白名单被建立,黑名单失效

/etc/cron.allow   ##用户白名单,当此名单出现,除root用户及名单中的用户,其他用户不能执行crontabtouch /etc/cron.allow  ##建立白名单

我们可以看到,默认是没有/etc/cron.allow这个文件的,我们使用vim命令会自动创建出来这个文件并且编辑这个文件,查看文件内容,发现xixi在这个白名单里,同样的我们查询了黑名单,发现xixi也在这个名单里,那么到底哪个名单生效呢?我们切换到xixi这个用户,发现可以使用crontab。这就说明,白名单生效,黑名单失效。同样的,我们切换到haha这个用户,发现haha并不能使用crontab,这就更加说明,只有白名单里的用户可以使用crontab的权力,也就是白名单被执行,黑名单失效。

这里写图片描述

2.4.文件方式定义crontab

vim /var/spool/cron/用户名称      #以某个用户身份执行cron,文件名称必须与用户名称一致分   时   天   月   周   动作vim /etc/cron.d/文件             #设定多个用户身份cron分   时   天   月   周   用户  

这个时候我们应该先将/etc/cron.deny文件清空 /etc/cron.allow文件删除,不要让这个影响到我们接下来的动作。
我们给/etc/cron.d/westos这个文件里写入两行程序,分别用root和xixi用户在/tmp目录中建立文件,我发现只能用root这个用户建立出来文件,猜测是/tmp这个目录权限的问题,于是我查询了这个目录的权限,果然如此,xixi这个其他用户在这个目录中没有执行权限,也就是无法建立文件,我更改了/tmp这个目录的权限以后,xixi这个用户就可以建立出来文件了。

这里写图片描述

这里写图片描述

这里写图片描述

作完实验,不要忘了将我们的电脑恢复成原来的样子哟~

这里写图片描述

原创粉丝点击