延时任务at
1.at命令
使用方法:
at now+5min|时间
>命令
>Ctrl + d
示例:
at 14:20
at> date
at> <EOT>
job 2 at Sun Oct 29 14:20:00 2017
at now+5min
at> date
at> <EOT>
job 3 at Sun Oct 29 14:27:00 2017
at -l | atq ##查看未执行的延时任务
atrm ip | at -d ##终止延时任务
at -M ##延时任务有输出不产生邮件,退出邮件使用q
at -c ip ##查看延迟任务的内容
at -m ##延时任务无输出产生邮件
mail ##查看邮件的内容,邮件在/var/spool/mail/kiosk中
at -f filename ##将文件内容中的命令作为延时任务的动作
2.黑名单
/etc/at.deny ##at命令黑名单配置文件
vim /etc/at.deny
kiosk
at 18:00 ##kisok被加入黑名单,使用at的权限被禁止
You do not have permission to use at.
3.白名单
touch /etc/at.allow ##建立at命令白名单配置文件,白名单出现,黑名单失效.所有用户均不能使用at
vim /etc/at.allow ##编辑白名单,添加westos用户,只有westos用户和root用户能执行at命令
定时任务cron
cron由crond.service提供
写入程序的时间和事件是永久保存的
1.设定方式
(1)命令方式
crontab -u -e ##参数可不写
分钟 小时 天 月 周 事件
58 06 * * * rm -rf /mnt/* ##每天的06:58执行rm -rf /mnt/*
58 06 1,15 * * rm -rf /mnt/* ##每月1日和15日的06:58执行rm -rf /mnt/*
58 06 1-15 * * rm -rf /mnt/* ##每月1日至15日的06:58执行rm -rf /mnt/*
58 06 1,15 3 * rm -rf /mnt/* ##3月1日、15日的06:58执行rm -rf /mnt/*
58 06 1,15 3 3 rm -rf /mnt/* ##3月1日、15日的06:58和3月的每个周三的06:58执行rm -rf /mnt/*
\*/2 06-17 * * 1-5 rm -rf /mnt/* ##周一到周五的每天早上6点至下午的5点之间每隔2分钟执行rm -fr /mnt/*事件
注意:多个事件的执行并不是按照事件排列的先后顺序执行,事件的执行是根据命令的执行效率决定的,比如rm -rf优先于touch。
(2)文件方式定义crontab
vim /var/spool/cron/用户名 ##以某用户身份执行cron,文件名称必须和用户名称一致
分 时 日 月 周 动作
vim /etc/cron.d/文件 ##设定多个用户身份执行cron
分 时 日 月 周 用户 动作
注意:
当用户root使用文件方式定义crontab时,执行动作的用户是以root用户的身份执行的。即使该用户被加入黑名单,依旧可以执行动作。
2.编辑事件
crontab -e #编辑事件
-l ##列出事件
-r ##删除事件
-r -i ##删除任务时会询问是否删除,输入y则删除
-r -u student ##以student用户执行事件
/var/spool/cron/* ##cronrenwu存储位置
3.cron的黑白名单
默认情况下,系统只存在黑名单,当白名单被建立,则黑名单失效
(1)黑名单
/etc/cron.deny
vim /etc/cron.deny
westos
crontab -e
You (westos) are not allowed to use this program(crontab)
See crontab(1) for more information
(2)白名单
touch /etc/cron.allow ##建立at命令白名单配置文件,白名单出现,黑名单失效.所有用户均不能使用cron。
vim /etc/cron.allow ##白名单中添加westos用户,只有root和westos用户可以使用cron。
westos
(3)文件方式定义crontab
vim /var/spool/cron/用户名 ##以某用户身份执行cron,文件名称必须和用户名称一致
分 时 日 月 周 动作
vim /etc/cron.d/文件 ##设定多个用户身份执行cron
分 时 日 月 周 用户 动作
临时文件管理
vim /usr/lib/tmpfiles.d/westos.conf ##编写管理临时文件的配置文件,westos.conf为用户自定义的
d /mnt/westos 777 root root 10s
| | | | | |
目录 存放临时文件的目录 目录的权限 目录所属用户 所属组 清理目录内文件的间隔时间
systemd-tmpfiles –create /usr/lib/tmpfiles.d/* ##执行管理临时文件配置文件
systemd-tmpfiles –clean /usr/lib/tmpfiles.d/* ##清理超过配置文件设定时间的文件
重新打开一个窗口,进行监控: watch -n 1 ls -lR /mnt/
在原窗口touch /mnt/file1,10s之后执行systemd-tmpfiles –clean /usr/lib/tmpfiles.d/*,会发现/mnt/file1不见了。
练习:定时人物cron与临时文件管理结合使用
vim /usr/lib/tmpfiles.d/westos.conf ##编写配置文件的内容
d /westos/ 777 root root 30s
systemd-tmpfiles --create /usr/lib/tmpfiles.d/* ##执行配置文件的内容,当目录/westos/不存在时会建立/westos/
touch /westos/file{1..5} ##向存放临时文件的目录内新建文件
vim /etc/cron.d/westos ##文件方式编写定向任务
* * * * * root systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* ##每分钟清理一次临时文件
ls -l /westos/ ##查看临时文件是否被清理