一.系统的延时任务
1.at 命令
(1)at 命令可以指定某一任务在将来的特定时间运行。该作业可能是一次备份
、对您系统的检查或者特定时间发送的通知。那些需要花费很长时间才可完
成的作业正适合 at 命令。仅需使用 at 命令将任务设置为在一分钟或两
分钟之后运行。然后您便可以安全注销 , 因为该任务会在与 shell 会话
断开连接的情况下运行
(2)at 命令必须指定任务应运行的时间。该指定可以是具体时间和 / 或日期
( 例如星期一 , 10:00pm 或 7 月 15 日 ) 。也可以是当前时间的相
对时间 ( 现在时间加上 5 分钟 , 现在时间加上 3 天或 4:00pm 加上
1 周 ) 通过添加其他选项 , 您可以在任务完成是发送邮件 ( -m ), 或者
从文件中读取任务 ( -f 文件 ), 而无需通过标准输入进行
在键入 at 命令行之后 , 按 Enter 并继续键入作业中包含的其他命令。
任务可由多个命令组成。在完成键入要运行的命令时 , 在单独出现的一行
中按 Ctrl+d 完成任务
2.at命令示例
at 时间 设定在该时刻要进行什么操作
at now+时间 min 在几分钟后要进行什么操作
at -l 查看定时任务
at -c 4 查看指定编号为4的定时任务具体命令
at -r 4 删除编号为4的定时任务
实验:
[root@localhost mnt]# at 17.23
at> touch file{1..4}
at> <EOT> ### ctrl+d
job 4 at Mon Nov 5 17:23:00 2018
[root@localhost mnt]# at -l
4 Mon Nov 5 17:23:00 2018 a root
[root@localhost mnt]#
注:
在将某一 at 作业设置为运行之后 , 可以通过使用 atq 命令列出作业编
号以及次数。若要查看作业中所包含的命令 , 键入 at -c #( # 号为作业
编号 ) 。键入 Atrm # ( # 号为作业编号 ) 则是删除指定作业
3.管理定期任务
cron 设备管理必须按计划定期重复运行的程序。后台程 crond每分钟唤醒一次 , 以运行计划的任何任务用户使用 crontab命令计划个人任务。系统管理员可以在系统范围配置文件中设置任务
单个用户使用称为 crontab ( cron 表 ) 的文本文件登记任务
二.定时任务
1.指定用户进行定时任务
crontab -u username -e #指定用户建立定时任务
crontab -u username -l #指定用户查看定时任务
crontab -u username -r #指定用户删除定时任务
crontab -l 列出文件
crontab -r 删除文件
crontab -e 编辑文件
crontab -e 使用默认编辑器是 vi
2.corn 时间表示方式
1* 2* 3* 4* 5* command
– 1*---------- 分钟
– 2*---------- 小时
– 3*---------- 天
– 4*---------- 月
– 5*---------- 周
3.时间表示示例
实验:
(1)监控/mnt/这个目录
(2)在/mnt/目录下建立文件
(3).
crontab -u root -e 指定root用户建立定时任务
* * * * * rm -rf /mnt/* 每分钟执行一次
crontab -u root -l 指定root用户查看定时任务
这时看监控/mnt 文件应该已被删除
crontab -u root -r 删除定时任务
注意:
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.系统级定时任务
实验:
在/mnt创建文件
移动至/etc/cron.d
vim编辑,文件名任意,但必须在/etc/cron.d目录下
* * * * * root rm -fr /mnt/* 每天每分钟 以root用户身份 删除文件
查看
此时/mnt/下的文件已被删除
注意:
关闭服务后,便不会执行定时任务
[root@localhost cron]# systemctl stop crond.service
重新在/mnt/下建立文件
[root@localhost mnt]# touch file{1…6}
开启服务
[root@localhost mnt]# systemctl start crond.service
即使开启服务后也不会执行因为时间已经过了;到下一次还是执行
还原:
三.cron 权限设定
在系统中默认所有用户可以设定 cron
用户黑名单(写进这个文件的用户不可以使用crontab,未记录到这个文件的用户可以使用crontab )
/etc/cron.deny
用户白名单(凡是写进这个文件的用户可以使用crontab,不在这个文件的用户不允许使用crontab )
/etc/cron.allow
用户白名单比用户黑名单优先级高,这两个文件只选择一个来限制,因此只需要保留一个即可。一般情况下系统默认保留/etc/cron.deny
1.建立用户黑名单
(1)将book用户写入黑名单
/etc/cron.deny
(2)切换至book用户下
(3)使用crontab -e创建任务时发现.并没有权限
(4)还原,切换回超级用户下,打开 /etc/cron.deny
,将book用户删除
(5)切换至book用户下,crontab -e创建任务
可以创建任务
三.临时文件的清理
系统中服务在正常运行时会产生临时文件在系统中 /usr/lib/tmpfiles.d/ 标实服务的临时文件存放位置
systemd-tmpfiles --create /usr/lib/tmpfiles.d/* creat 创建;
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* clean 清除
实验:
1.监控
2.清理临时文件
(1)vim编辑,文件名任意但结尾必须是.conf
说明:
d /mnt/westos 777 root root 8s
文件类型 名称 权限 所有人 所有组 存在时间
(2)创建/usr/lib/tmpfiles.d/目录下的westos.conf文件里的任务
(3)创建文件
(4)清理文件