Linux基础(4)——Linux中的定时任务与延时任务
1.系统延时任务
at 命令
at 定时任务
输入 at 时间 ,指定执行的任务,Ctrl +D 结束输入。
at 23:37 #设定任务执行时间
at> rm -fr /mnt/* #任务动作
at> <EOT> #用ctrl+D发起任务
at 延时任务
at now+3min #设定任务延时时间
at> rm -fr /mnt/* #任务动作
at> <EOT> #用ctrl+D发起任务
at 任务管理
at -l #查看任务列表
at -c num #查看任务内容
at -r num #取消任务执行
当at任务执行后会输出结果时,会以邮件的方式发给任务发起者
[root@rhclient Desktop]# mail -u root #查看超级用户邮件
# 1 #查看第一封邮件
# q #退出
[root@rhclient Desktop]# > /var/spool/mail/root #清空root用户邮件
at 黑白名单
系统默认存在黑名单,名单中的用户无法使用at命令;当创建白名单时,黑名单自动失效,此时只有白名单中的用户可以使用at命令。
/etc/at.deny # 黑名单
/etc/at.allow # 白名单
2.crontab
系统控制crontab的服务为crond.service 。crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
crontab 时间表示方式
minute hour day month week + command
* * * * *
*/2 * * * * #表示每两分钟
*/2 09-17 * * * #早7-晚5每两分钟
*/2 09-17 3,5 1 5 #每年1月的每个星期五以及3号和五号早9晚5每隔2分钟
*/2 09-17 * * 5 #每周周五早9晚5
用户级定时任务
每个用户的定时任务都保存在 /var/spool/cron/username ,文件名为用户名。可以直接编辑对应文件添加任务,也可以通过命令添加定时任务。
crontab [-u user] file
# 指定 file文件内容 为user用户添加定时任务,若未指定文件则接受键盘输入
crontab [-u user] [ -e | -l | -r ]
# -e:编辑某个用户的crontab文件内容。不指定用户默认为当前用户
# -l:显示某个用户的crontab文件内容,默认为当前用户
# -r:从/var/spool/cron目录中删除crontab文件,默认为当前用户
系统级定时任务
系统级定时文件存放在 /etc/cron.d/ 下,添加时需要新建文件并添加内容,添加任务时需要指定运行用户。
* * * * * username action
# 如:
* * * * * root rm -fr /mnt/*
crontab 黑白名单
与at 的黑白名单类似,默认存在黑名单,白名单出现时黑名单失效。但黑白名单都不会影响系统级的crontab 任务。
crontab 邮件问题
crontab 通常在执行cron作业时发送电子邮件。它使用/etc/crontab中的MAILTO变量来确定谁接收电子邮件,默认情况下该用户是root。有几种方法可以停止此行为。
将MAILTO变量更改为空白。
编辑 /etc/crontab 文件,并将MAILTO变量更改为以下内容:
MAILTO=""
3. 临时文件的管理
系统中服务在正常运行时会产生临时文件,用户临时文件规则配置存放在 /usr/lib/tmpfiles.d/xxx.conf
文件编写格式:
# 类型 路径 文件权限 所有者 所有组 生命周期 参数
# Type Path Mode UID GID Age Argument
d /run/user 0755 root root 10d -
systemd-tmpfiles --create /usr/lib/tmpfiles.d/xxx.conf
# 应用配置文件
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/xxx.conf
# 清空对应文件