鄂州市政府网站建设分析西安seo工作室
第一章 例行性工作
1、单一执行的例行性工作
单一执行的例行性工作:仅处理执行一次就结束了 .
1.1 at命令的工作过程
/etc/at.allow:里面的用户是可以使用at命令的 --- 但实际上这个allow文件不存在,所以指全部的人都可以使用该命令;
/etc/at.deny:黑名单
注:两个文件如果都不存在,只有root能使用
相关命令:
#at工作调度对应的系统服务 [root@localhost ~]# ps -ef | grep at [root@localhost ~]# systemctl status atd --- 查看atd状态做实验前,可以直接重启atd,方便: [root@localhost ~]# systemctl restart atd #atd就相当于是at的守护进程 #at的工作文件存放目录 [root@localhost ~]# ll /var/spool/at #at工作的日志文件 [root@localhost ~]# ll /var/log/cron 监测时间:watch -n x cat 文件 查看日志:tail -f /var/log/cron
1.2 at命令详解
命令格式:
at [参数] [时间]
参数: -m 当任务完成之后,即使没有标准输出,将给用户发送邮件 -l atq的别名,可列出目前系统上面的所有该用户的at调度 -d 是atrm的别名,可以取消一个在at调度中的工作 -v 使用较明显的时间格式,列出at调度中的任务列表 -c 可以列出后面接的该项工作的实际命令内容(脚本) -f 从文件中读取作作业 时间格式: HH:MM 在今天的HH小时MM分钟执行,如果今天的这个时间点已经过了,则明 天执行 HH:MM YYYY-MM-DD 强制规定在某年某月的某一天的特殊时刻进行该工作 MMDDYY now + 2 minutes 从现在开始几分钟minutes, hours, days, or weeks
实验例子:
#定义三分钟之后显示hello [root@server ~]# at now + 3 minutes 用命令查看写的命令任务:at -l = atq去查看 删除单一命令:at -d 序号 = atrm 序号 写命令:按ctrl+d结束提交
2、循环执行的例行性工作crond
循环执行的例行性工作:每隔一定的周期就需要执行一次
2.1 crontab的工作过程
/etc/cron.allow #写在该文件的人可以使用cron命令
/etc/cron.deny #黑名单
两个文件如果都不存在,只有root能使用
相关命令:
#crontab工作调度对应的系统服务 [root@localhost ~]# systemctl status crond#crontab工作的日志文件 [root@localhost ~]# ll /var/log/cron#用户定义计划任务的文件所在目录 [root@localhost ~]# ll /var/spool/cron/
2.2 crontab命令详解
[root@localhost ~]# crontab --help Usage:crontab [options] filecrontab [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-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计划任务的时间格式:
分 | 时 | 日 | 月 | 周 |
---|---|---|---|---|
0-59 | 0-23 | 1-31 | 1-12 | 0-7 |
注意:若存在冲突,则是或的关系;(在周不是*的情况下)
在周是*的情况下,日期的优先级高一点;
当想把IP地址信息写入一个文件里面的时候,需要在循环执行任务里面加上路径PATH。 --- 跟系统的计划任务一样
[root@master01 ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@master01 ~]# crontab -l
* * * * * ip a show ens160 > /root/ens160
[root@master01 ~]# watch -n 1 ls -l /root/
发现我们写的任务执行不了:
将路径写入到crontab -e里面:
现在就可以正常执行任务了:
date 月日时分年秒
crontab计划任务的时间格式中的特殊符号:
特殊字符 | 含义 |
---|---|
* | 代表任何时刻 |
, | 代表分隔时段 |
- 0-59 | 代表一段时间范围 |
/数字 | 指定时间的间隔频率,例如每 3 分钟进行一次,*/3 |
注:%在crontab里面有特殊含义,如果有命令里面需要使用%,需要使用\转义。
#每天早上9点整说good morning [root@server ~]# crontab -e 0 9 * * * wall "good morning"
注:wall命令用于向系统当前所有打开的终端上输出信息。 通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。
2.3 系统的计划任务(对系统所有用户都生效的任务文件)
[root@localhost ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
若是有很多任务需要一起执行,就把这些任务放在一个文件夹里面,然后用run-parts写入到/etc/crontab中;
例子: [root@master01 ~]# bash /root/write.sh [root@master01 ~]# cat /root/write1.sh 同时想要执行这些任务。 将这两个任务放在一个文件里面 [root@master01 ~]# mkdir /root/Write --- 创建一个Write文件夹,专门放write.sh和write1.sh [root@master01 ~]# mv write.sh write1.sh /root/Write [root@master01 ~]# vim /etc/crontab * * * * * root run-parts /root/Write 完成!
课堂练习:
2.3.1实验一:定义三分钟之后显示hello
at now + 3 minutes at > wall hello
2.3.2实验二 : 每天早上9点整,说good morning
crontab -e 00 09 * * * wall "good morning"
注释:
wall命令用于向系统当前所有打开的终端上输出信息。
通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。
2.3.3实验三:指定某些用户不可以执行计划任务
/etc/at.deny /etc/cron.deny
2.3.4实验四:系统级别例行性任务
[root@localhost ~]# vim /etc/crontab
2.3.5实验五:创建一个以当前时间的文件,循环执行的工作;例如:当前时间为11:48,文件为file-11-48.txt
date命令:date +%R = date +%H%M
注意:记得加转义字符\,不然识别不了!就执行不了任务。
2.3.6实验六:写一个循环任务,直接将一个write.sh文件的内容追加到/root/file
步骤: 1.创建一个write.sh文件,并写入内容echo hello >> /root/file 2.[root@master01 ~]# bash /root/write.sh ---执行一次 3.[root@master01 ~]# cat /root/file --- 可以看到file文件里面已经有内容了 hello 4.[root@master01 ~]# vim /etc/crontab --- 将该任务写进系统计划任务里面 * * * * * root bash /root/write.sh