第五周学习内容:Linux的程序包管理、任务计划以及文本处理工具sed。

第五周作业:

1、简述rpm与yum命令的常见选项,并举例。

      rpm命令:基本用法:rpm+[option]+程序包。常见选项:-i 安装;-u 升级;-e 卸载;-q 查询等,每个选项都有各自的子选项,其中-v是一个通用子选项,表示显示详细过程,每个选项都可以带上它。

      选项-i:表示安装该rpm程序包,常用子选项:-h 显示安装进度条,所以综合起来一般使用rpm命令安装程序包都是rpm -ivh+程序包,这样有详细过程,又有进度条;--test 做安装检测,不实际安装,主要是为了检测是否存在依赖关系;--nodeps 忽略依赖关系强行安装;-- replacekgs 重新安装;--nosignature 不检查数字签名;--nodeigest 不检查完整性。

      Linux学习(第五周)_作业

      选项-U或-F:表示升级该rpm程序包,两者的区别在-U为升级或安装,-F为仅升级,即如果该程序包原先没有安装,该命令将无法执行,常用子选项:-h 和安装一样也是显示安装进度条,综合起来升级一般使用rpm -uvh或-Fvh+程序包的格式;--oldpackage 降级;--force 强制升级。对于升级需要注意的是(1)不要对内核做升级操作,只要安装新版本就可以了;(2)如果源程序包的配置文件在安装后被修改,则升级不会改配置文件,新的配置文件会被另存为rpmnew后缀。

      Linux学习(第五周)_作业_02

      选项-e:表示卸载该rpm程序包,后面直接跟程序名也可以,常用子选项:--allmatches 卸载所有匹配指定名称的程序包的版本;--nodeps 忽略依赖关系;--test 做测试,不真删除。

      Linux学习(第五周)_学习记录_03

      选项-q:表示查询rpm程序包,后面可以跟包的名字,也可以是程序包提供的能力,还可以是已安装好的程序名,常用子选项:-a 查询所有已安装过的程序包;-f 查询程序是由那个包生成的;-p 查询未安装的程序是由哪个包生成的,可以找出程序包并去找到相应的下载;-l 列出已安装好的程序包生成的所有文件;-i 查询程序报相关的简要信息;--privides 列出指定程序包所能提供的能力。

      Linux学习(第五周)_学习记录_04

      yum命令:作为红帽公司的程序包前端管理工具,在平时yum命令使用的多一些,因为比较好用。基本用法:yum+[option]+程序名。常见选项:list 列出所有已安装与未安装的程序包,后面加通配符可以列出匹配到的,加available可以列出所有可用的,加updates可以列出所有升级包,加installed可以列出所有已安装的;install:安装程序包,会自动解决依赖关系;update 升级程序包;remove 卸载程序包;info 查看简要信息;provides 查看某特性由那个程序包提供,若没有安装会自动下载安装;clean 清理本地缓存;search 搜索程序包或某能力;reinstall 重装程序包;downgrade 降级程序包;deplist 查看依赖关系;history 查看历史;grouplist、groupinstall、groupupdate、groupremove、groupinfo这几个都是程序包组相关命令,一下子可以安装一组实现某特定功能的程序包;-y 自动回答为yes;-q 静默模式;-disablerepo 临时禁用某仓库。

      Linux学习(第五周)_作业_05

2、自建yum仓库,分别为网络源和本地源。

      设置网络源:在/etc/yum.repos.d/目录下创建仓库配置文件,其中有三条是必不可少的,分别是[仓库名]、name=仓库描述、baseurl=仓库具体指向,除此之外还可以有些可选的,mirrors=镜像路径、enable=表示该仓库是否启用,1是启用,0是禁用,默认是启用的、gpgcheck=表示验证是否,1是启用,0是禁用,除了这些可选的条目,还默认添加了几个变量,%releasever当前发行版的主版本号、%arch平台类型、%basearch基础平台、%yum0-9自定义变量。

      Linux学习(第五周)_作业_06

      使用yum repolist可以查看yum仓库的情况。

      Linux学习(第五周)_作业_07

      可以看到TEST仓库已经有了。

      设置光盘源:与网络源的配置一致,只是把baseurl=设置为光盘挂载的位置,以file开头。若没有挂载光盘,第一步请先把光盘挂载到系统某处。

      Linux学习(第五周)_作业_08

      Linux学习(第五周)_作业_09

      Linux学习(第五周)_作业_10

3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00。

      at命令:基本用法:at+[option]+时间,表示哪个时间执行哪几个命令,时间的格式为HH:MM[YYYY-MM-DD],用单词表示时间有noon、midnight、teatime、tomorrow、now等,而now+数字则表示现在开始后多少时间执行,数字后面的单位有min、hours、days、weeks等,当这句命令输入完以后会进入编辑模式,在编辑模式里可以输入想要执行的各种命令,也可以调用某个脚本。常用选项:-l 查看作业列表;-f 直接读取作业任务,无需进入编辑模式;-d 删除任务;-c 限时任务带数字编号;-q 指明队列。

      crontab命令:基本用法:crontab -e,输入完此命令后会进入编辑界面,因为crobtab的周期性任务命令有他自己的固定格式,要根据格式在此编辑界面中输入。格式还分为系统级和用户级,先系统级:(1)每行定义一个一个周期性任务,格式为* * * * *+用户名+指令,前五个“*”用来定义周期;(2)此处的环境变量不同于用户登录后的环境变量,因此建议使用绝对路径或自定义环境变量;(3)执行结果以邮件的形式发给指定用户。用户级:(1)无需指定用户名;(2)邮件也是发给当前用户。关于时间周期:五个“*”分别代表了分钟;小时;月中的第几天;月份;周中的第几天,取值:(1)特定值:具体某个数值,如:3 * * * * 表示每月的每天的每小时的03分执行任务,这是一个每小时任务;(2)*:给定时间点上有效取值范围内的所有值,可以理解为“每XX”,如:3 4 * * 5表示每月的每周五的每4点03分执行任务,这是一个每周任务;(3)离散数值:以“,”隔开,前后不要加空格,如:9 8 * * 3,7表示每周三周日的8点09分执行任务,这是一个每周两次的任务;(4)连续数值:以“-”连接;(5)在指定时间点上定义步长:以“/”+数字表示每数字时间执行,如:*/5 * * * * 表示每5分钟执行任务。除了-e选项,crontab还有几个其他常用选项:-l 列出所有crontab任务;-r 移除所有crontab任务;-u 管理员可以指定为哪个用户管理crontab任务。

      先写脚本,再用crontab命令调用即可。

      Linux学习(第五周)_学习记录_11

      Linux学习(第五周)_作业_12

      Linux学习(第五周)_作业_13

      稍微调整了下参数,最终通过邮件能够收到反馈内容。

      Linux学习(第五周)_作业_14

4、简述sed常用操作命令,并举例。

      sed是一款行编辑器,一次仅处理一行文本,和其他工具一样,不会对源文件进行更改,而是将源文件中的一行一行抽出来放入自己的模式空间,在模式空间中设置匹配条件,条件符合则会做出相应编辑并默认输出,而不符合则不做编辑直接输出。

      sed命令:基本用法:sed+[option]+sed脚本+文本,这里的sed脚本即为模式空间中用作匹配的条件。常用选项:-n 默认输出调整为不输出,经常用的到;-e 在一个命令中实现多个sed脚本,默认只支持一个;-f 可以直接跟一个编辑好的sed脚本文件;-r 支持扩展正则表达式;-i 直接编辑原文件,非常危险尽量不要使用。sed脚本一般分为两部分,地址定界和编辑命令。地址定界:(1)不给任何地址表示全文;(2)单地址:# 表示第几行、/PATTERN/ 表示被此模式匹配到的每一行;(3)地址范围:#,# 表示从第几行到第几行;#+# 表示从第几行向下几行;(4)步进:#~# 表示从第几行开始每几行。编辑命令:(1)d表示删除;(2)p表示显示;(3)a表示追加、i表示插入,后面追加,前面插入;(4)c表示替换;(5)w表示保存;(6)r表示读取;(7)=表示加行号,在被匹配到的行上面加个数字;(8)!表示取反;(9)s/// 表示替换,也可以用@@@或###代替,与vim中的替换命令非常相似。

      标准的/etc/fstab

      Linux学习(第五周)_作业_15

      删除第一行到第五行:

      Linux学习(第五周)_学习记录_16

      显示从第一行开始没五行:发现第一行、第六行、第十一行都显示了两遍。

      Linux学习(第五周)_学习记录_17

      在第三行追加一句“newline”:

      Linux学习(第五周)_作业_18

      替换命令与追加类似。

      把fstab文件中以#开头的航保存至/tmp/fstab.net中:

      Linux学习(第五周)_学习记录_19

      读取命令与替换类似,常用于文本合并。

      在第十行上加一个数字:

      Linux学习(第五周)_作业_20

      不删除所有以#开头的行,非#开头的删除:

      Linux学习(第五周)_学习记录_21