cron被用来调度重复的任务,而at被用来在指定时间内调度一次性的任务。一旦一个作业被提交,at命令将会保留所有当前的环境变量,包括路径,该作业的所有输出都将以电子邮件的形式发送给用户
系统的延时任务和定时任务
1.延时任务(at)
使用at命令可以在某一指定时间内调度一项一次性作业,at命令后面必须先指定时间,接着指定日期
命令的用法:
at [选项] [时间参数]
at [选项]
选项 | 选项的含义 |
-f<脚本> |
所要提交的脚本或命令 |
-l | 列出当前所有等待运行的作业 |
-d | 清除某个作业,需要提供相应的作业标识(ID) |
-m | 作业完成后个用户发邮件 |
-c<作业标识号> | 在命令行上列出的作业标准输出 |
-t<时间> | 在指定时间提交作业运行,时间格式为[[CC]YY]MMDDhhmm |
时间参数的格式
时间参数 | 描述 |
HH:MM | 比如04:00代表4:00AM。如果时间已过,他就会在第二天的这一时间执行 |
Midnight | 代表12:00AM(即00:00) |
Noon | 代表12:00PM(即12:00) |
Teatime | 代表4:00PM(即16:00) |
英文月名 日期 年份 | 比如“January 15 2018”代表2014年1月15,年份可有可无 |
MMDDYY、MM/DD/YY或MM.DD.YY | 比如“011519”代表2019年1月15号 |
now+时间 | 时间以minutes,hours,days或weeks为单位,比如“now +5days”代表命令在5天后的此时此刻执行 |
[root@localhost ~]# at 11:52 #设定任务执行时间
at> rm -rf /mnt/file* #任务动作
at> <EOT> <---> ctrl+d #用ctrl+d发起任务
job 1 at Tue Jul 31 11:52:00 2018
[root@localhost ~]# at now+1min #延时1分钟
at> echo hello
at> <EOT>
job 2 at Tue Jul 31 11:53:00 2018
at -l #查看任务列表
at -c 任务号 #查看任务内容
at -r 任务号 #取消任务执行
注意:
当任务有输出时,输出会以邮件形式发送给at任务的发起者
mail -u root #查看超级用户的邮件
number #查看第几封邮件
-q 退出
> /var/spool/mail/root #清空邮件
2.at命令的执行权力设定
/etc/at.deny ###用户黑名单,在此名单中出现的用户不能执行at命令
/etc/at.allow ###用户白名单,名单默认不存在,但名单一旦出现,黑名单失效,系统所有用户默认不能执行at,只有在名单中出 现的用户可以使用at命令
2.定时任务
使用crom实现任务,任务计划可以通过修改/etc/crontab文件以及使用crontab命令实现,其结果是一样的。
发起方式一 crontab命令
使用crontab命令可以创建爱你,修改,查看以及删除crontab条目
命令格式:
crontab [选项]
crontab [选项] [文件]
选项 | 选项含义 |
-u<用户名> | 用户名,如果使用自己的用户名登陆,就不需要使用该选项 |
-e | 编辑用户的crontab |
-l | 列出用户的crontab中的内容 |
-r | 删除用户的crontab |
-i | 删除用户的crontab前进行提示 |
crontab -u username -e
crontab -u username -r
crontab -u username -l
发起方式二
vim /etc/cron.d/filename
分钟 小时 天 月 周 用户 动作
* * * * * root rm -fr /mnt/* #超级用户每分钟清里一此/mnt
crontab 命令的执行权力设定
/etc/cron.deny ##用户黑名单,在此名单中出现的用户不能执行crontab命令
/etc/cron.allow ##用户白名单,名单默认不存在,但名单一旦出现,黑名单失效
##系统所有用户默认不能执行crontab,只有在名单中出现的用户可以使用
把westos添在用户黑名单,此时用户黑名单里的用户不能执行此权力,所以westos只能有读的权力,相反若是用户在用户白名单,就可以执行crontab权力
3.系统临时文件的管理
系统中服务在正常运行时会产生临时文件
/usr/lib/tmpfiles.d/*.conf ##系统中临时文件的配置
systemd-tmpfiles --create /usr/lib/tmpfiles.d/* ##执行临时文件配置
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* ##清理临时文件