第五周《简述rpm与yum命令的常见选项....》

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

rpm的相关命令和选项
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: 更详细的输出
-h: hash marks输出进度条;每个#表示2%的进度;
--test: 测试安装,检查并报告依赖关系及冲突消息等;
--nodeps: 忽略依赖关系;副作用是能安装成功,但未必能运行
--replacepkgs: 重新安装
--force:强制安装
安装时常用的组合:-ivh,-ivvh

 [root@wujunjie ~]# rpm -ivh /media/cdrom/Packages/zsh-5.0.2-25.el7.x86_64.rpm 
warning: /media/cdrom/Packages/zsh-5.0.2-25.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-25.el7                 ################################# [100%]
升级:
rpm {-U|--update} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

-U: 升级或安装;
-F: 只是升级;
组合使用:-Uvh,-Fvh
--test: 测试安装,检查并报告依赖关系及冲突消息等;
--nodeps: 忽略依赖关系;副作用是能安装成功,但未必能运行
--oldpackage:降低到旧版本

  • 注意:
    (1)不要对内核做升级操作; Linux支持多内核版本并存,因此,直接安装新版本内核;
    (2)如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;
卸载:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts][--test] PACKAGE_NAME ...
   简单用法:rpm -e PACKAGE_NAME...

--allmatches: 卸载所有匹配指定名称的程序包的各版本;
--nodps: 忽略依赖关系
--test: 测试卸载, dry run模式

  • 注意:
    如果程序包的配置文件安装后曾被修改,卸载时,此文件通常不会被删除,而是被重命名(加后缀.rpmsave)后留存。
查询:
rpm {-q|--query} [select-options] [query-options]

[select-options]
-qa 查询已安装的所有程序包

[root@wujunjie ~]# rpm -qa tree
tree-1.6.0-10.el7.x86_64

-qf FILE 其后可跟个文件名,查询指定文件是由哪个程序包安装生成的

[root@wujunjie ~]# rpm -qf /bin/cd
bash-4.2.46-20.el7_2.x86_64

-qp 用于实现对未安装的程序包执行查询操作,其后有--whatprovides CAPABILITY,未安装的程序包有哪些特性;
--whatprovides CAPABILITY 查询指定的CAPABILITY由哪个程序包提供;
--whatrequires CAPABILITY 查询指定的CAPABILITY被哪个程序包所依赖;
[query-options]:
-ql 程序安装生成的所有文件列表;

[root@wujunjie ~]# rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz

-qi 程序包的相关信息,版本号,大小,所属的包组等;

[root@wujunjie ~]# rpm -qi tree
Name        : tree
Version     : 1.6.0
Release     : 10.el7
Architecture: x86_64
Install Date: Sat 25 Aug 2018 08:56:02 AM CST
Group       : Applications/File
Size        : 89505
License     : GPLv2+

-qc 查询指定的程序提供的配置文件

[root@wujunjie ~]# rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc

-qd 查询指定的程序提供的帮助文件

[root@wujunjie ~]# rpm -qd tree
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz

--changelog 查询rpm包的changelog
--provides 查询指定的程序包提供的所有的CAPABILITY;
-R 查询指定的程序包的依赖关系;
--scripts 查询程序包自带的脚本信息;

校验:
 rpm {-V|--verify} [select-options] [verify-options]

S: file Size differs文件的容量大小是否被篡改
M:Mode differs文件的类型或文件的属性是否被改变
5:MD5 sum differs MD5这一种指纹码的内容已经不同
D:Device major/minor number mismatch装置的主/次代码已经改变
L:readLink(2) path mismatch Link路径已被改变
U:User ownership differs 文件的所属人已被改变
G:Group ownership differs 文件的所属群组已被改变
T:mTime differs 文件的创建时间已被改变
P:caPabilities differ

yum命令:
语法格式:yum [options] [command] [package ...] 
yum命令可一次性操作多个rpm包的管理
yum常见命令列表
常用命令 解释说明
install package1 [package2] [...] 安装程序包,package为程序包名即可;
update [package1] [package2] [...] 程序包升级,更新,其后可跟程序包名,也可不跟程序包名,如果不加程序包名,即有更新升级的程序包即升级更新,没有的话就不升级更新;这个对比的是yum仓库源里的程序包版本;
remove erase package1 [package2] [...] 卸载程序包;
list 显示yum仓库里的程序包文件列表;
info 查看指定程序包简要信息
provides whatprovides feature1 [feature2] [...] 查看指定的特性或者某个文件由哪个程序包提供
makecache 构建缓存;
gruops 包组管理;有些程序包可打包成一个包组名来进行统一管理;
clean [packages,metadata,expire-cache,rpmdb,plugins,all] 清 理本地缓存;
search string1 [string2] [...] 搜索指定字符串的相关程序包信息;
localinstall rpmfile1 [rpmfile2] [...] 安装本地程序包;
localupdate rpmfile1 [rpmfile2] [...] 升级更新本地程序包;
reinstall package1 [package2] [...] 重新安装程序包;
downgrade package1 [package2] [...] 降级安装程序包;
deplist package1 [package2] [...] 显示指定程序包的依赖关系;
repolist [all,enable,disable] 显示仓库列表;
repoinfo [all,enable,disable] 显示仓库的详细信息;
version 显示yum的版本相关信息;
history 查看yum事务历史;
check-update 检查可用升级的程序包;
yum 包组管理的相关管理命令:
yum groupinstall 安装多个软件,安装这个软件的所有依赖的软件包,yum groupinstall安装的时候软件包名必须加双引号
yum gruopupdate 更新这个软件的所有软件包
yum gruoplist 查看这个软件的所有软件包
yum groupremove 卸载所有软件包
yum groupinfo 可以获得YUM仓库中的软件分组信息

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

先查看机器上所有的yum源仓库,并将其备份

[root@wujunjie ~]# yum repolist 
Loaded plugins: fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
 * base: mirrors.cn99.com
 * extras: mirrors.cn99.com
 * updates: mirrors.cn99.com
repo id                          repo name                                status
!base/7/x86_64                     CentOS-7 - Base                        9,911
!extras/7/x86_64                   CentOS-7 - Extras                      370
!updates/7/x86_64                  CentOS-7 - Updates                     1,054
repolist: 11,335
[root@wujunjie yum.repos.d]# mkdir backup
[root@wujunjie yum.repos.d]# mv ./*.repo backup/
[root@wujunjie yum.repos.d]# ll
total 4
drwxr-xr-x. 2 root root 4096 Sep 15 10:38 backup

挂在本地镜像ISO文件

[root@wujunjie ~]# mkdir /mnt/cdrom
[root@wujunjie ~]# mount /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
[root@wujunjie ~]# mount -r /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 is already mounted or /mnt/cdrom busy
       /dev/sr0 is already mounted on /run/media/root/CentOS 7 x86_64
       /dev/sr0 is already mounted on /media/cdrom
       /dev/sr0 is already mounted on /mnt/cdrom

配置本地yum源文件

[root@wujunjie yum.repos.d]# vim server_local.repo
[server_local]
name=yum_source
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0

清空原缓存并建立新yum缓存

[root@wujunjie yum.repos.d]# yum clean all 
Loaded plugins: fastestmirror, langpacks
Cleaning repos: server_local
Cleaning up everything
Cleaning up list of fastest mirrors
[root@wujunjie yum.repos.d]# yum makecache 
Loaded plugins: fastestmirror, langpacks
server_local                                           | 3.6   kB  00:00:00     
(1/4): server_local/group_gz                           | 155 kB  00:00:00     
(2/4): server_local/primary_db                         | 3.0 MB  00:00:00     
(3/4): server_local/filelists_db                       | 3.0 MB  00:00:00     
(4/4): server_local/other_db                           | 1.3 MB  00:00:00     
Determining fastest mirrors
Metadata Cache Created
[root@wujunjie yum.repos.d]# yum repolist 
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
repo id                        repo name                      status
server_local                   yum_source                     3,831
repolist: 3,831

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

at命令
at [OPTION]... TIME

常用选项:
-l:查看作业队列,相当于atq,执行完后,就消失了
-f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用再交互式输入;
-d:删除指定的作业,相当于atrm;
-c:查看指定作业的具体内容;
-q QUEUE:指明队列;
-v 可以使用较明显的时间格式列出at中的工作列表

  • 注意:作业执行结果是以邮件发送给提交作业的用户;
[root@wujunjie ~]# at now+2min
at> echo 1234
at> 
job 1 at Sat Sep 15 15:45:00 2018
[root@wujunjie ~]# atq
1   Sat Sep 15 15:45:00 2018 a root
[root@wujunjie ~]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 root                  Sat Sep 15 15:45  14/491   "Output from your job           1"
& 1
Message  1:
From [email protected]  Sat Sep 15 15:45:00 2018
Return-Path: 
X-Original-To: root
Delivered-To: [email protected]
Subject: Output from your job        1
To: [email protected]
Date: Sat, 15 Sep 2018 15:45:00 +0800 (CST)
From: [email protected] (root)
Status: R
1234
& q
Held 1 message in /var/spool/mail/root
crontab命令
crontab [-u user] [-l | -r | -e] [-i]

常用选项
-e:编辑任务;
-l:列出所有任务;
-r:移除所有任务;即删除/var/spool/cron/USERNAME文件;
-i:在使用-r选项移除所有任务时提示用户确认;
-u user:root用户可为指定用户管理cron任务;

[root@wujunjie ~]# 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
五个时间点分别表示:分,小时,天,月,周几
[root@wujunjie ~]# crontab -l
10 3,5 * * 3  /bin/date '+%F %H:%M:%S '

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

sed [OPTION]... script [input-file]...
  • 常用选项:
    -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
    -e∶直接在指令列模式上进行 sed 的动作编辑;
    -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
    -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
    -i∶直接修改读取的档案内容,而不是由萤幕输出。

  • 常用编辑命令:
    -a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    -c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
    -d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
    -i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    -p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
    -s ∶替换,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!对于替换还有两个后选项分别为:
    g:全局替换和
    i:不区分大小写
    -r /path/from/somefile :在文件的指定位置插入另一个文件的所有内容,完成文件合并
    -w /path/to/somefile:把指定的内容另存至/path/somefile路径所指定的文件中

  • 常用选项实例
    -n安静输出;

    [root@wujunjie ~]# head -4 /etc/passwd|nl|sed -n  "2p"
    2 bin:x:1:1:bin:/bin:/sbin/nologin取消默认输出
    
  • 常用编辑命令实例:
    -a新增内容

    [root@wujunjie ~]# head -4 /etc/passwd|nl|sed "2a1223213213"
    1 root:x:0:0:root:/root:/bin/bash
    2 bin:x:1:1:bin:/bin:/sbin/nologin
    1223213213
    3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
    4 adm:x:3:4:adm:/var/adm:/sbin/nologin
    

-c取代

[root@wujunjie ~]# head -4 /etc/passwd|nl|sed "2c1223213213"
 1  root:x:0:0:root:/root:/bin/bash
1223213213
 3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
 4  adm:x:3:4:adm:/var/adm:/sbin/nologin

-d删除

[root@wujunjie ~]# head -4 /etc/passwd|nl|sed  "2d"
 1  root:x:0:0:root:/root:/bin/bash
 3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
 4  adm:x:3:4:adm:/var/adm:/sbin/nologin

-i插入

[root@wujunjie ~]# head -4 /etc/passwd|nl|sed  "2i1231"
 1  root:x:0:0:root:/root:/bin/bash
1231
 2  bin:x:1:1:bin:/bin:/sbin/nologin
 3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
 4  adm:x:3:4:adm:/var/adm:/sbin/nologin

-s替换(g全局替换)

[root@wujunjie ~]# head -4 /etc/passwd|nl|sed  "2s#bin#123#g"
 1  root:x:0:0:root:/root:/bin/bash
 2  123:x:1:1:123:/123:/s123/nologin
 3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
 4  adm:x:3:4:adm:/var/adm:/sbin/nologin

-p列印

[root@wujunjie ~]# head -4 /etc/passwd|nl|sed  "2p"
 1  root:x:0:0:root:/root:/bin/bash
 2  bin:x:1:1:bin:/bin:/sbin/nologin
 2  bin:x:1:1:bin:/bin:/sbin/nologin
 3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
 4  adm:x:3:4:adm:/var/adm:/sbin/nologin

你可能感兴趣的:(第五周《简述rpm与yum命令的常见选项....》)