; 第五周作业 | Linux运维部落

第五周作业

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

rpm 命令

linux的的包管理器,用于对rpm软件包,进行安装、升级、卸载、查询、校验等操作。

使用语法:

rpm [OPTIONS] [PACKAGE_FILE]

常用选项:

  • 安装: -i,–install
  • 升级: -U,–update,-F,–freshen
  • 卸载: -e,–erase
  • 查询: -q,–query
  • 校验: -V,–verify
  • 数据库维护: –builddb,–initdb

安装:

rpm {-i|–install} [install-options] PACKAGE_FILE …

通用选项

  • -v: verbose,详细信息
  • -vv: 更详细的过程输出

install-options:

  • -h: 在展开包的时候输出50个#号哈希标记符,[#表示2%的进度]
  • –test: 测试检查安装,并报告依赖关系及冲突消息.
  • –nodeps: 忽略依赖关系,并安装
  • –replacepkgs: 重新安装
  • –noscripts: 忽略RPM包的脚本执行

如果被操作修改的了安装的配置文件,重新安装并不会替代此文件,如果要恢复安装需要删除配置文件

升级:

rpm{-U|–upgrade}[install-options] PCKAGE_FILE… rpm{-F|–freshen}[install-options] PCKAGE_FILE…

  • -U: 基于早期版本号升级或全新安装,
  • -F:仅作升级

独有选项:

  • –oldpackage:降级安装,{回滚操作}
  • –force:强制升级

卸载:

rpm {-e|–erase}[–allmatches][–nodeps][–noscripts][–test]PACKAGE_NAME…

卸载选项:

  • –allmatches: 卸载所有匹配指定名称的程序包个版本。
  • –nodeps:忽略依赖关系,
  • –test:测试卸载,dry run模式,

查询:

rpm{-q|–query}[select-options][query-optons]

select-options:

  • PACKAGE_NAME:查询指定的程序包是否已经安装及版本
  • -q: 是查询包选项。
  • -a,–all:是查询已经安装的所有包。
  • -f FILE: 查询指定的文件是由哪些安装包生成
  • -g –group:查询组中的包。
  • -p –package PACKAGE_FILE: 用于实现对未安装的程序包执行查询操作.
  • –whatprovides CAPABILITY: 查询指定的CAPABILTY由哪个程序包提供。
  • –whatrequires CAPABILITY: 查询指定的CAPABILITY被哪个包所依赖:

query-optons:

  • –changelog: 查询rpm包的cheanglog
  • -l: 程序安装包的所有文件列表
  • -i –info: 程序包相关的信息,版本号、大小、所属的包租,等
  • -c –configfiles: 查询指定的程序提供的配置文件。
  • -d –docfiles:查询指定的程序包提供的帮助文档。
  • –provides:列出指定的程序包提供的所有的CAPABILITY.
  • -R –requres: 查询指定程序包的依赖关系。
  • –scripts:查询程序包自带的脚本片段。

校验:

rpm {-V|–verify}[select-options][verify-options]

常用选项:

  • –nodeps:不校验依赖关系。
  • –nodigest:不检查包完整性。
  • –nofiles:不校文件属性是否发生改变。
  • –nosignature: 不校验包完整性等等。

特性说明:

  • S:表示大小发生变化了。
  • M:权限发生改变。
  • 5:MD5码发生改变,(完整性发生变化)。
  • D:主/次设备号不匹配。
  • L:readLink的路径不匹配。
  • U:属主被修改。
  • G:属组被修改。
  • T:最后一次修改时间戳,修改了。
  • p:caPabilities 被修改。

数据库重建:

rpm {–initdb | –rebuilddb}[–dbpath DIRECTORY][–root DIRECTORY]

常用选项:

  • –initdb: 初始化数据库,当前无任何数据库可初始化创建一个新的,如果存在数据库,不执行任何操作。
  • –rebuilddb:重行构建,同故宫读取当前系统上所有已经安装过的程序包进行重新创建。

示例安装:


1
2
3
4
[root@MiWiFi-R3-srv ~]# rpm -ivh /tmp/rpm/zsh-5.0.2-28.el7.x86_64.rpm

准备中...                          ################################# [100%]
      软件包 zsh-5.0.2-28.el7.x86_64 已经安装

示例升级:


1
2
3
4
5
[root@MiWiFi-R3-srv ~]# rpm -Uvh --force /tmp/rpm/zsh-5.0.2-28.el7.x86_64.rpm

准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-5.0.2-28.el7                 ################################# [100%]

示例卸载:


1
2
3
4
[root@MiWiFi-R3-srv ~]# rpm -evh zsh
准备中...                          ################################# [100%]
正在清理/删除...
   1:zsh-5.0.2-28.el7                 ################################# [100%]

示例查询:


1
2
[root@MiWiFi-R3-srv ~]# rpm -qa zsh
zsh-5.0.2-28.el7.x86_64

示例校验:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
首先修改其内容
[root@MiWiFi-R3-srv ~]# vim /usr/share/zsh/5.0.2/functions/ztodo


# vim: set ft=zsh et sw=2 sts=2:
#   测试#号
#   测试#号
#   测试#号
#   测试#号
emulate -L zsh
setopt no_sh_word_split null_glob no_ksh_arrays
typeset -gHA __ztodolist
typeset -gH __ztodolastwrite
local cachefile short_format list_format
local tmp needupdate=0
local -a todos

示例执行校验


1
2
[root@MiWiFi-R3-srv ~]# rpm -V zsh
S.5....T.    /usr/share/zsh/5.0.2/functions/ztodo

示例重建数据库:


1
[root@MiWiFi-R3-srv ~]# rpm --rebuilddb

yum 命令

yum是属于rpm的一种前端管理器,通过C\S协议,是一种能够自动解决rpm包在安装时需要调用复杂的运行环境。

语法:

yum [options] [command] [package …]

显示所有仓库:

yum repolist [all] [enabled|disabled] 启用 | 禁用

显示程序包:

list:

  • 1、yum list [all|glob_exp1] [glob_exp2] […]
  • 2、yum list {available|installed|updates} [glob_exp1] […]

安装程序包:

install package1 [package2] […]

reinstall package1 [package2] […] (重新)

yum install gcc-4.5.4 [指明老版本,默认是安装新版本]

升级程序包:

update [package1] [package2] […]

downgrade package1 [package2] […] (降级)

检查可用升级:

check-update

卸载程序包:

remove | erase package1 [package2] […] 如果卸载被依赖的包也会被卸载。

查看程序包的information 查看程序包的简要说明。

info […]

查看指定的特性:(可以是某文件)是由那个程序包提供的

provides | whatprovides feature1 [feature2] […]

清理本地缓存:

clean [packages | metadata | expire-cache | rpmdb | plugins | all]

构建缓存:

makecache

搜索:

search string1 [string2] […]
以指定关键字搜索程序包名及summary信息。

查看指定包所依赖的capabilities:

deplist package1 [package2] […]

查看yum事物历史:

history [info | list | packages-list | packages-info | summary | addon-info | redo | undo |rollback |new | sync |stats]

安装及升级本地程序包:

  • localinstall rpmfile1 [rpmfile2] […]
    • (maintained for legacy reasons only – use install)
  • localupdate rpmfile1 [rpmfile2] […]
    • (maintained for legacy reasons only – use update) 已经作废,centos 7 可以直接使用 yum install 包名

包组管理的相关命令:

  • groupinstall group1 [group2] […] 安装指定包组
  • groupupdate group1 [group2] […]升级包组
  • grouplist [hidden] [groupwildcard] […] 显示包组
  • groupremove group1 [group2] […]移除包组
  • groupinfo group1 […]查看包组的相关信息
  • search string1 [string2] […]

示例显示所有yum仓库


1
2
3
4
5
6
7
8
[root@MiWiFi-R3-srv ~]# yum repolist

已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源标识                                                     源名称                                                                    状态
!base                                                      CentOS 7 Release 7.1.1503                                                 8,652
!xen4CentOS                                                Xen 4 CentOS 7                                                            8,652
repolist: 17,304

示例查看所有可用的包


1
2
3
4
5
6
7
8
[root@MiWiFi-R3-srv ~]# yum list

已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
已安装的软件包
GConf2.x86_64                           3.2.6-8.el7                    @anaconda
ModemManager.x86_64                     1.1.0-6.git20130913.el7        @anaconda
ModemManager-glib.x86_64                1.1.0-6.git20130913.el7        @anaconda

示例安装:


1
2
3
4
5
6
7
8
9
10
[root@MiWiFi-R3-srv ~]# yum install zziplib-utils.x86_64


已安装:
  zziplib-utils.x86_64 0:0.13.62-5.el7                                                                                                    

作为依赖被安装:
  zziplib.x86_64 0:0.13.62-5.el7                                                                                                          

完毕!

示例升级:


1
[root@MiWiFi-R3-srv cdrom]# yum update zziplib

示例卸载:


1
2
3
4
5
6
7
8
9
[root@MiWiFi-R3-srv cdrom]# yum remove zziplib

例删除:
  zziplib.x86_64 0:0.13.62-5.el7                                                                                                          

作为依赖被删除:
  zziplib-utils.x86_64 0:0.13.62-5.el7                                                                                                    

完毕!

示例查看程序包的特性:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@MiWiFi-R3-srv cdrom]# yum info zziplib

已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
可安装的软件包
名称    :zziplib
架构    :i686
版本    :0.13.62
发布    :5.el7
大小    :82 k
源    :base
简介    : Lightweight library to easily extract data from zip files
网址    :http://zziplib.sourceforge.net/
协议    : LGPLv2+ or MPLv1.1
描述    : The zziplib library is intentionally lightweight, it offers the ability to
         : easily extract data from files archived in a single zip file. Applications
         : can bundle files into a single zip archive and access them. The implementation
         : is based only on the (free) subset of compression with the zlib algorithm
         : which is actually used by the zip/unzip tools.

示例查看指定特性


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@MiWiFi-R3-srv cdrom]# yum provides zziplib

已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
zziplib-0.13.62-5.el7.i686 : Lightweight library to easily extract data from zip files
源    :base



zziplib-0.13.62-5.el7.i686 : Lightweight library to easily extract data from zip files
源    :xen4CentOS



zziplib-0.13.62-5.el7.x86_64 : Lightweight library to easily extract data from zip files
源    :base



zziplib-0.13.62-5.el7.x86_64 : Lightweight library to easily extract data from zip files
源    :xen4CentOS

示例清理本地缓存


1
2
3
4
5
6
7
8
[root@MiWiFi-R3-srv cdrom]# yum clean
已加载插件:fastestmirror, langpacks
错误:清理命令需要参数:headers, packages, metadata, dbcache, plugins, expire-cache, rpmdb, all
[root@MiWiFi-R3-srv cdrom]# yum clean all
已加载插件:fastestmirror, langpacks
正在清理软件源: base xen4CentOS
Cleaning up everything
Cleaning up list of fastest mirrors

示例构建缓存


1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@MiWiFi-R3-srv cdrom]# yum makecache
已加载插件:fastestmirror, langpacks
base                                                                                                               | 3.6 kB  00:00:00    
xen4CentOS                                                                                                         | 2.9 kB  00:00:00    
(1/7): base/group_gz                                                                                               | 154 kB  00:00:00    
(2/7): base/primary_db                                                                                             | 5.1 MB  00:00:00    
(3/7): base/filelists_db                                                                                           | 6.0 MB  00:00:00    
(4/7): base/other_db                                                                                               | 2.2 MB  00:00:00    
(5/7): xen4CentOS/primary_db                                                                                       | 5.1 MB  00:00:00    
(6/7): xen4CentOS/filelists_db                                                                                     | 6.0 MB  00:00:00    
(7/7): xen4CentOS/other_db                                                                                         | 2.2 MB  00:00:00    
Determining fastest mirrors
元数据缓存已建立
[root@MiWiFi-R3-srv cdrom]#

示例搜索:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@MiWiFi-R3-srv cdrom]# yum search zz

已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
============================================================ N/S matched: zz =============================================================
harfbuzz-devel.i686 : Development files for harfbuzz
harfbuzz-devel.x86_64 : Development files for harfbuzz
harfbuzz-icu.x86_64 : Harfbuzz ICU support library
harfbuzz-icu.i686 : Harfbuzz ICU support library
zziplib-devel.i686 : Development files for the zziplib library
zziplib-devel.x86_64 : Development files for the zziplib library
zziplib-utils.x86_64 : Utilities for the zziplib library
harfbuzz.x86_64 : Text shaping library
harfbuzz.i686 : Text shaping library
zziplib.i686 : Lightweight library to easily extract data from zip files
zziplib.x86_64 : Lightweight library to easily extract data from zip files

  名称和简介匹配 only,使用“search all”试试。

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


1
2
3
4
5
6
7
8
9
10
11
12
13
[local]
name=CentOS cdrom
baseurl=file:///tmp/cdrom/
gpgcheck=0
enabled=1
keepcache=0

[http]
name=mirrors 163
baseurl=http:///http://mirrors.163.com/centos/$7.4.1708/updates/$x86_64/
gpgcheck=
enabled=1
keepcache=0

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

linux任务计划执行

  • 特定时间执行一次: at
  • 周期性循环执行 : crontab

at

特定时间执行一次脚本

语法格式:

at [OPTION]…TIME

常用选项:

  • -l:查看作业队列,相当于atq
  • -f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用在交互式输入。
  • -d #:删除指定的作业,相当于atrm #
  • -c #:查看待执行作业的内容。
  • -q QUEUE #:指明队列。

TIME:模糊执行

  • HH:MM [YYYY-mm-dd]
  • noon 正午 ,
  • midnight 午夜,
  • teatime 喝茶时间
  • tomorrow 明天
  • now+# 重目前计数起
  • UNIT:minutes,hours,days,OR weeks 相对时间
注意:作业执行结果是以邮件发送提交作业的用户。

crontab

语法格式:

crontab [-u user] [-l|-r|-e][-i]

常用选项:

  • -e:编辑任务,
  • -l:列出所有当前用户的任务。
  • -r:移除所有任务,及删除/varspool/cron/UASERNAME文件。
  • -i:在使用-r选项移除所有任务时提升用户避免出错。
  • -u user:root用户可为指定用户管理cron任务。
注意:运行结果以邮件通知给当前用户,如何拒绝接收邮件。
  • (1)COMMAND > /dev/null;正常结果发给 数据黑洞
  • (2)COMMAND &> /dev/null;无论结果正确与否都发送给 数据黑洞 比较危险建议程序正常执行了一次后再加/dev/null
注意:定义COMMAND时,如果命令需要用到%,需要对其转义,或加单引号‘’。

3、 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00


1
2
3
4
5
6
7
8
1、首先新建一个文本用来记录输出内容.
   [root@localhost ~]# touch /tmp/date.txt

2、设置一个周期性计划.
   [root@localhost ~]# crontab -e

   10 5 * * 3 /bin/date '+\%F \%T' &>> /tmp/date.txt
   0 3 * * 3 /bin/date '+\%F \T' $>> /tmp/date.txt

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

sed 命令

sed与grep、awk被成为文本处理三剑客,其中sed是流编辑器,将文本中的数据进行逐行编辑处理,处理过程大体是至上而下读取一行数据到模式空间(pattern space)与模式空间中的指定模式进行edit【编辑处理】由模式决定是否输出至stdout(标准输出)。

语法:

sed [OPTION]…’script’ [input-file]…

常用选项:

  • -n:不输出模式空间中的内容至屏幕。
  • -r:支持使用正则表达式。
  • -i:直接编辑源文件。
  • -e scripts: 同时编辑多个文档。
  • -f /PATH/TO/SED_SCRIPT_FILE: 多个编辑命令组成的script脚本来编辑文件

地址定界:

  • 空地址:对全文进行编辑
  • 单地址:
    • A :指定行 pattern:模式匹配的每一行。
  • 地址范围:
    • A,B:A起始行至B结束行。
    • A,+B:A指定起始行向后多少B行。
    • A,/pate1/: 指定行A开始到模式匹配的第一个值之间的内容。
  • 步进:~ 指定行向后多少位的行。

常用编辑命令

  • d:删除
  • p:显示模式空间被地址定界指定的内容。
  • a \text: 将‘text’追加到行尾,支持\n
  • i \text: 将‘text’插入行首,支持\n
  • c \text: 把匹配道德行替换为‘text’文本
  • w /PATH/TO/SOMEFILE: 保存模式空间匹配到的行至指定文本中,
  • r /PATH/FROM/SOMELILE: 读取指定文件插入到模式空间匹配的行后面,实现文件合并。
    • =:为模式匹配到的打印(显示)行号
    • !:条件取反。
      • \定制定界!编辑命令
  • s///: 查找替换,其分隔符可指定指定,常用的有s@@@,s###等等。
    • 替换标记:
      • g:全局替换,替换行的首次匹配。
      • p:显示替换成功的行。
  • w /PATH/TO/SOMELIFE:将替换成功的结果保存到指定文件中,

支持的正则表达式

  • 字符匹配:
    • .号:匹配任意单个字符。
    • []:匹配指定范围内的任意单个字符。
    • [^]:匹配指定范围外的任意单个字符。
      • [[:upper:]];匹配大写字母
      • [[:lower:]];所有小写字母
      • [[:alpha:]]: 所有字母
      • [[:digit:]]: 所有数字
      • [[:alnum:]]: 所有的字幕和字符
      • [[:space:]]: 所有空白字符
      • [[:punct:]]: 所有标点符号
  • 匹配次数:用在要指定其出现的次数的字符的后面,用于现在其前面字符出现的次数。默认工作于贪婪模式,能匹配多长就多长
    • *:匹配其前面的字符任意次,0,1或者多次。
    • .*:匹配任意长度的任意字符。
    • \?:匹配其前面的字符0次或1次,即前面的字符是可有可无的。
    • +:匹配前面的字符1次或多次,即其前面的字符要出现至少1次。
    • {m}:匹配其前面的字幕m次,
    • {m,n}:匹配其前面的字符至少m次,至少n次

位置锚定:

  • ^:行首锚定,用户模式的最左侧。
  • $:行尾锚定,用于模式的最右侧
  • \<或\b:词首锚定,用于单词模式的左侧。
  • >或\b:词尾锚定,用户单词模式的右侧
  • \<pattern\>:精确锚定单词。</pattern\>

示例:只显示/etc/rpc的前4行


1
2
3
4
5
6
7
[root@MiWiFi-R3-srv ~]# sed -n '1,4'\p /etc/rpc

#ident    "@(#)rpc    1.11    95/07/14 SMI"    /* SVr4.0 1.2    */
#
#    rpc
#
[root@MiWiFi-R3-srv ~]#

示例: 将yum.conf 的3-5行插入 “hello”


1
2
3
4
5
6
7
8
9
10
[root@localhost sed]# sed '3,+2 a\hello' yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
hello
debuglevel=2
hello
logfile=/var/log/yum.log
hello
exactarch=1

示例:查询空白行


1
2
3
4
5
[root@localhost sed]# sed -r -n '/^$/p' yum.conf



[root@localhost sed]#

[root@localhost sed]# sed ‘s@[[:space:]]+@—-@’g yum.conf

[main]

That`s—-the—-line “`

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:/90076

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1660809109@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达娱乐开户  万达招商  万达直属  华宇招商  万达娱乐主管  万达娱乐招商QQ  万达娱乐平台  万达娱乐注册  万达娱乐注册  万达主管