例行性工作
单一执行的例行性工作
仅处理执行一次就结束了
at命令的工作过程
- /etc/at.allow,写在该文件的用户可以使用at命令
- /etc/at.deny,黑名单
- 两个文件如果都不存在,只有root能使用
- 如果两个文件都有这个用户,则按照allow执行
#查看at程序有没有运行
[root@localhost ~]# ps -ef | grep at
#at工作调度对应的系统服务
[root@localhost ~]# systemctl status atd
#at的工作文件存放目录
[root@localhost ~]# ll /var/spool/at
#at工作的日志文件
[root@localhost ~]# ll /var/log/cron
at命令详解
命令格式:at [参数] [时间]
参数:
-m 当任务完成之后,即使没有标准输出,将给用户发送邮件
-l atq的别名,可列出目前系统上面的所有该用户的at调度
-d atrm的别名,可以取消一个在at调度中的工作
-v 使用较明显的时间格式,列出at调度中的任务列表
-c 可以列出后面接的该项工作的实际命令内容(脚本)
-f 从文件中读取作作业
时间格式:
HH:MM 在今天的HH小时MM分钟执行,如果今天的这个时间点已经过了,则明
天执行
HH:MM YYYY-MM-DD 强制规定在某年某月的某一天的特殊时刻进行该工作
now + 2 minutes 从现在开始几分钟minutes, hours, days, or weeks
案例:
定义1分钟之后显示hello(时间是从敲完“at now + 1 minutes”后开始计时)
输错时,按住crl在按删除即可删除
效果:
其他命令:(命令前加#表示注释)
1、atq:查看任务列表
“8” 表示任务编号
“a root” 对应的用户
2、atrm [任务编号] 或者 at -d [任务编号] :删除任务
创建任务后,会在任务文件(/var/spool/at)中创建一个随机命名(随机字符长度是固定的)的任务文件
打开/var/spool/at/a0000901b301e0文件(删除此文件也有删除任务的效果)
[root@localhost ~]# vim /var/spool/at/a0000901b301e0
Linux 9版本默认没有邮件收发功能
装包(邮箱)
[root@localhost yum.repos.d]# yum install postfix
[root@localhost yum.repos.d]# systemctl restart postfix
---- 重新启动postfix服务
查找某个包(crond)是否存在
1、 yum list installed | grep crontab
2、rpm -qa | grep crontab
查找程序是否运行
ps -aux | grep crond
循环执行的例行性工作crond
每隔一定的周期就需要执行一次
crontab的工作过程
- /etc/at.allow,写在该文件的用户可以使用at命令
- /etc/at.deny,黑名单
- 两个文件如果都不存在,只有root能使用
- 如果两个文件都有这个用户,则按照allow执行
#crontab工作调度对应的系统服务
[root@localhost ~]# systemctl status crond
#crontab工作的日志文件
[root@localhost ~]# ll /var/log/cron
#用户定义计划任务的文件所在目录
[root@localhost ~]# ll /var/spool/cron/
crontab命令详解
[root@localhost ~]# crontab --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
Usage:
crontab [options] file
crontab [options]
crontab -n [hostname]
Options:
-u <user> define user
-e edit user's crontab
-l list user's crontab
-r delete user's crontab (清空)
-i prompt before deleting (在删除用户 crontab 文件之前进行确认。)
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-V print version and exit (打印版本并退出)
-x <mask> enable debugging (启用调试)
编辑crontab:crontab -e
crontab计划任务的时间格式:
分 | 时 | 日 | 月 | 周 |
---|---|---|---|---|
0-59 | 0-23 | 1-31 | 1-12 | 0-7 |
date 更改的时间格式:月日时分年.秒
crontab计划任务的时间格式中的特殊符号:
特殊字符 | 含义 |
---|---|
* | 代表任何时刻 |
, | 代表分隔时段 |
- 0-59 | 代表一段时间范围 |
/数字 | 指定时间的间隔频率,例如每 3 分钟进行一次,*/3 |
注:%在crontab里面有特殊含义,如果有命令里面需要使用%,需要使用\转义。
crontab -e
:
通过 crontab -e 编辑可以通过 (crontab -l -u 用户 )来查看用户有哪些任务信息
一般通过某一个用户添加任务信息,也会产生一个临时文件(这个临时文件在/var/spool/cron),
临时文件文件名:以哪个用户编辑的周期性任务文件,会把该任务文件以这个用户名命名
vim etc/crontab
:
写在 /etc/crontab 这个文件只能通过 cat 的方式去查看对于用户有哪些任务信息
系统当中任意用户所添加的周期性任务都可以写到该文件。所用用户都对该文件由匹配权限
#每天早上9点整说good morning
[root@server ~]# crontab -e
0 9 * * * wall "good morning"
注:wall命令用于向系统当前所有打开的终端上输出信息。
通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。
系统的计划任务
当需要同一时间执行多个脚本时,可以将这多个脚本放在一个目录下,然后使用run-parts来执行。
run-parts:该命令可将后面接的“目录”内的所有文件找出来执行。
可唤醒停机期间的工作任务
anacron 可以处理关机状态时未执行的计划任务,anacron不能指定何时执行某项任务,而是以天为单位或是在开机后立刻进入anacron的操作(/etc/anacrontab
)。它会去检测停机期间应该进行但是并没有进行的crontab任务,并将该任务执行一遍,然后anacron就会自动停止了
课堂练习
实验一:定义三分钟之后显示hello
at now + 3 minutes
实验二 : 每天早上9点整,说good morning
0 9 * * * wall "good morning"
注释:
- wall命令用于向系统当前所有打开的终端上输出信息。
- 通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。
实验三:指定某些用户不可以执行计划任务
/etc/at.deny
/etc/cron.deny
实验四:系统的例行性任务
[root@localhost ~]# vim /etc/crontab
上输出信息。
- 通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。
实验三:指定某些用户不可以执行计划任务
/etc/at.deny
/etc/cron.deny
实验四:系统的例行性任务
[root@localhost ~]# vim /etc/crontab