您的位置:首页 > 运维架构 > Linux

linux学习之旅(十四)&& 系统延时及定时任务

2017-08-02 15:40 519 查看

系统延时及定时任务

一.系统延时任务 ( 延时任务是临时的 )

1.at命令

at 命令可以指定某一任务在将来的特定时间运行。该作业可能是一次备份 、对您系统的检查或者特定时间发送的通知。那些需要花费很长时间才可完 成的作业正适合 at 命令。仅需使用 at 命令将任务设置为在一分钟或两 分钟之后运行。然后您便可以安全注销 , 因为该任务会在与 shell 会话 断开连接的情况下运行

at 命令必须指定任务应运行的时间。该指定可以是具体时间和 / 或日期 ( 例如星期一 , 10:00pm 或 7 月 15 日 ) 。也可以是当前时间的相 对时间 ( 现在时间加上 5 分钟 , 现在时间加上 3 天或 4:00pm 加上 1 周 ) 通过添加其他选项 , 您可以在任务完成是发送邮件 ( -m ), 或者 从文件中读取任务 ( -f 文件 ), 而无需通过标准输入进行

at  +  time
at> 延迟的动作
ctrl+d   ##保存退出

at -l | atq     ##查看当前任务
atrm  | at -d +任务号  ##取消指定任务
at -c +任务号      ##查看任务内容
at now+1min     ##延时一分钟
at -f file  time    ##延时执行文件中的内容(文件不是脚本)
at -m   (at命令后添加)##延时命令没有输出时也发送邮件给执行者,当你命令没有输出,也要发送邮件给执行者,但邮件内容是空的
at -M   (。。。)   ##延时命令即使有输出也不发送邮件给执行者
at now+1min -f file ##(设置时间发送文件)


mail 可以收邮件,默认有输出的命令才可以发起邮件

2.at命令的执行权力设定

/etc/at.deny ##用户黑名单,此名单中的用户不能执行at命令 (直接在文件中写用户名)

/etc/at.allow
##用户白名单,名单默认不存在,本身只有at.deny这一个文件,但是名单一旦出现,即touch  /etc/at.allow,那么用户黑名单(at.deny)失效,而且系统默认所有用户默认不能执行at,只有在这个名单中出现的用户可以使用at命令(优先级高于黑名单)。文件也是直接进去写

*两个文件即改即生效*


可以man 5 at.allow



二.定期任务

定时任务是永久的

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

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

1.发起方式

发起方式一(命令发起)

crontab -u username -e      ##username用户建立定时任务(默认vi编辑器进入编辑)
crontab -e 以自己身份写
##可以写多行
"此命令会进入一个文本,该文本的填写方式是: 分 时 天 月 周 + 命令"
crontab -u username -r      ##查看某用户的定时任务
crontab -u username -l      ##删除某用户的定时任务
man  5  crontab


如果在里面默认写创建文件时,这个文件默认创建在这个用户的家目录下

比如在 crontab -u student -e 中写了
* * * * * touch yyuyuyuyuyu
那么,这个文件被默认创建在了/home/student,即student的家目
af00
录下面



发起方式二(文件发起)

文件一:

/var/spool/cron/root(文件名谁发起就是谁的,也可以是student…)

man crontab:



在里面写,等同于crontab -u root -e,用crontab -u root -l 也能看见 。直接写入,不需要执行权限,直接生效



但是,用文件名区分,就要创建很多不同名的文件,非常麻烦,所以文件二就比较的重要了

文件二:

/etc/cron.d/filename (这里面写的是任务)

属于系统的任务通常保存在 /etc/crontab 文件中而不是使用 crontab -e 编辑保存在个人文件中。更好的做法是用文本编辑器创建 crontab 文件并保存到 /etc/cron.d 中 ( 避免更新 系统软件包 cronie 时出现问题 ) 。

/etc/cron.d/crontab 文件在日期说明后另加一个字段 , 表示将运行作业的用户 对于需要每天、每周或每月运行一次的脚本 ,

可以直接将其设 置为可执行文件 , 并保存在 /etc/cron.{daily,weekly,monthly} 中相应目录下。这些任务由 /etc/anacrontab 配置的系统 anacron 服务运行anacron 是 cron 的集成组件 , 用于更好地管理作业 , 并确保在作业。

注意: /etc/cron.d 是脚本文件,需要保证cron.d有执行权限,才可以使目录里面的任务文件生效

vim /etc/cron.d/filename //创建一个文件并在里面填写,此文件可以填写多个用户

填写方式是:
"分钟 小时 天 月 周  用户  动作"
分 时 天 月 周 + 用户 + 命令
* * *  *  *  root  touch /mnt/file
//表示每分钟在/mnt目录下建立一个文件file,而且也是crontab不会看到的,也不会出现在/var/spool/cron/root

/etc/cron* 每个目录都有固定的效果,比如目录下有监控文件logrotate,如果有在关机状态时间内应该执行的定期动作,那么在开机时,会监控到之后,自动执行这些命令。


2.时间表示方法

man 5 crontab :



表示方式 : 分 时 天 月 周 命令(最精确只能精确到分钟,即最短也是每分钟执行)(必须都要有,不能省略)

eg:

* * /2 * #每隔两天

* 08-17/2 * * * #八点到下午两点每隔两个小时

* * 01,15 * 6 #每月一号,15号及周六



2.crontab命令的执行权力设定

/etc/cron.deny  //用户黑名单,此名单中的用户不能执行crontab命令'

/etc/cron.allow   #白名单,名单默认不存在,但是名单一旦存在,黑名单失效
#建立后所有用户均没有at命令执行权限,只有在名单中出现的用户可以使用(直接在文件中写用户名)
类似于at.allow  at.deny

即改即生效


三:系统中的临时文件

系统中服务在正常运行时会产生临时文件

/usr/lib/tmpfiles.d/*.conf #系统中临时文件的配置

在系统中 /usr/lib/tmpfiles.d/ 目录下存放

系统的临时文件配置是 /usr/lib/tmpfiles.d/*.conf,自己创建的临时文件配置文件必须以.conf结尾

临时文件配置的编写方式是:

文件类型 文件名称 文件权限 文件所有人 文件所有组 文件存在时间(此时时间没到就删不掉,clean不掉)

eg:

d /mnt/westos 777 root root 10s

##表示在/mnt目录下创建临时目录westos,并且十秒内不能被删除

systemd-tmpfiles --create  /usr/lib/tmpfiles.d/*  //##执行临时文件配置
systemd-tmpfiles --clean  /usr/lib/tmpfiles.d/*   ##清理临时文件
##注意,可能在运行时会和之前设定的crontab冲突,所以如果在试验中出现问题,比如无法创建,那么可能执行了定时任务删除


eg:建立目录/mnt/demo,此目录中的文件必须存在2分钟以上才会被清理,系统每分钟清理/mnt/demo一次

编写脚本



运行之后:



整点两分钟之后:



//目录的子文件已经删除
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: