在linux系统的学习工作中,难免会遇到需要延迟进行的任务和需要定时去完成的任务,就像手机的闹钟一样,这时候就需要用到linux系统当中的系统延迟和定时任务的设置了,下文将对延迟和定时任务的设置和使用进行一些介绍。
1.系统延时任务
注意:有的定时任务不会输出当前屏幕上,会以邮件的方式发送到at的文件发起人
当任务有输出的时候才会发送邮件,但是像rm命令就不会发送邮件,
系统延迟任务是系统任务将在规定的时间或者在一定时间之后才进行的任务设置,和定时任务不同,这种命令发起的任务都是一次性的。
一般发起延迟任务的命令是"at"。
[root@localhost ~]# at 23:37 ##设定任务执行时间,这样设定的延时任务,可以用 at -l 查看
at> rm -rf /mnt/* ##任务动作
at><EOT> << ctrl+D ##用 ctrl+D 发起结束
[root@localhost ~]# at now+1min ##延时一分钟,这样设定的延时任务,用 at -l 查看不到
at> rm -rf /mnt/*
at><EOT>
at -l ##查看任务列表
at -c 任务号 ##查看任务内容
at -r 任务号 ##取消任务执行
mail -u root ##查看超级用户邮件
2.at任务的黑白名单
如果建立了allow,那么默认普通用户都不能执行allow,白名单出现,黑名单就失效了
/etc/at.deny ##系统中默认存在,此文件中出现的用户将不能执行at命令
/etc/at.allow ##系统中默认不存在,当文件出现,普通用户不能执行at命令,只有在名单中的用户才可以,并且/etc/at.deny失效
3.系统定时任务
crontab在/etc目录下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五个目录和crontab,cron.deny二个文件。
cron.daily #每天执行一次的job
cron.weekly #每个星期执行一次的job
cron.monthly #每月执行一次的job
cron.hourly #每个小时执行一次的job
cron.d #系统自动定期需要做的任务
crontab #设定定时任务执行文件
cron.deny #文件就是用于控制不让哪些用户使用Crontab的功能
(1)crontab 时间表示方式(用man的方式查看crontab的*代表什么 man 5 crontab)
特殊字符:
星号(*):代表每的意思,例如month字段如果是星号,则表示每月都执行该命令操作。
逗号(,):表示分隔时段的意思,例如,“1,3,5,7,9”。
中杠(-):表示一个时间范围,例如“2-6”表示“2,3,4,5,6”。
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
* * * * * ##每分钟
*/2 * * * * ##每两分钟
*/2 09-17 * * * ##早9-晚5每两分钟
*/2 */2 * * * ##每间隔两小时每两分钟
*/2 09-17 3,5 1 5 ##一月3号和5号和每周周五早9-晚5每两分钟
*/2 09-17 * * 5 ##每周周五早9-晚5每两分钟
(2)系统控制crontab的服务
crond.service ##当程序开启时定时任务生效
(3)crontab (普通用户也可以执行)
-e -u root ##指定用户编写定时文件
-l -u root ##查看指定用户定时文件
-r -u root ##删除指定用户定时文件
4.文件的方式设定定时任务
(1)vim /etc/cron.d/file
* * * * * username action
* * * * * root rm -fr /we/*
(2)vim /etc/cron.d/file
echo "* * * * * root rm -fr /we" > /etc/cron.d/file
注意:这样编写的法ile文件,用crontab -l查看不了时间设定,只能用cat /etc/cron.d/file查看
5.crontab的黑白名单
/etc/cron.deny ##系统中默认存在,此文件中出现的用户将不能执行crontab
/etc/cron.allow ##系统中默认不存在,当文件出现,普通用户不能执行crontab,只有在名单中的用户才可以
注意:这两个名单不会影响etc/cron.d目录中定时任务的发起及执行