2018-09-16

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

rpm命令

rpm -i 安装某个程序包

rpm -v 显示过程

rpm -h  显示进度条

rpm -q 查询某个程序包

rpm -e 删除安装的的程序包

rpm -U -F 升级与更新命令

-U升级安装

-F 只有安装了老版本需要升级新版本

rpm -V 校验

rpm -builddb -initdb 数据库维护

组合:

rpm -ivh

rpm -Uvh -Fvh

rpm -qa -qf -qi -qd ..(根据文件种类来查询)

rpm安装一般以组合命令为主

如最平常的-ivh


2018-09-16_第1张图片

因为我之前已经安装了zsh安装包,所以显示is already installed 

不过我们测试-e来删除重新安装


2018-09-16_第2张图片

这时候我们可以看到在-e 后重新安装-ivh 成功,并通过-q来查询zsh ,发现之前删除后提示的not installed 现在已经有安装了,所以就是这么简单。但是rpm无法解决依赖关系。

rpm -i 安装rpm包有安装属性选项,如以下属性选项:

--test 测试安装,检查并报告其依赖关系和冲突消息等,用法:rpm -i --test PACKAGE_NAME;

--nodeps 忽略依赖关系,不建议使用,用法:rpm -ivh --nodeps;

--replacepkgs 重新安装,主要应用于配置文件遭改动等,用法:rpm -i --replacepkgs;

rpm -e 也有选项属性:比如:

--allmatches 卸载所有匹配指定名称的程序包的各个版本;

--nodeps 忽略依赖关系卸载;

--test 测试卸载,不是真正的卸载,只是测试使用,如dry run(干跑)模式。

rpm -q 为查询,其附加命令有很多

如:

 -qa 查询已经安装的所以程序包

-qf 查询指定文件是由哪个程序包提供的

-qd 查询程序包提供哪些帮助文件

-qp 查询系统未安装的程序包

-qi 查询程序包的相关信息

-qc 查询程序包的配置文件

-ql 查看程序包生成的所有文件

-q --provides   查询指定的程序包提供的所有的CAPABILITY

-q --scripts 查询程序包自带的脚本信息


2018-09-16_第3张图片
2018-09-16_第4张图片
2018-09-16_第5张图片
2018-09-16_第6张图片
2018-09-16_第7张图片

rpm -V 校验:

rpm -V [select options | verify options]

verify options:包来源合法性验证和完整性验证

来源合法性验证通过数字签名,完整性验证通过获取并导入信任的包制作者的密钥;



数据库重建:

rpm数据库的位置路径为:/var/lib/rpm/,查询操作,通过此处的数据库进行;

rpm --initdb | --rebuilddb

--initdb 初始化数据库,当前无任何数据库可初始化创建一个新的,当前有时不执行任何操作;

--rebuilddb 重新构建,通过读取当前系统上所有已经安装过的程序包进行重新构建;


yum命令

主要命令有:

yum install 安装程序包

yum update [yum update-to] 升级程序包

yum check-update 检查可用升级

yum upgrade 

yum remove  卸载程序包

yum provides 查看指定文件是哪个程序包提供

yum clear 清理本地缓存

yum makecache 构建缓存

yum list 显示程序包

yum info 查看程序包信息

yum groupinstall 安装包组

yum groupupdate 升级包组

yum grouplist 包组列表

yum groupremove 包组卸载

yum groupinfo' 包组相关信息查询

yum search 通过关键字来搜索程序包及相关信息

yum localinstall 本地程序包安装

yum localupdate 本地程序包升级

yum reinstall  安装程序包

yum resolvedep

yum deplist 查看指定包所依赖的包组件

yum repolist 显示仓库列表

yum version 查看当前yum版本

yum history 查看yum历史

options:yum的命令选项(常用选项)

-y  --assumeyes 避免交互式安装,交互回答时,自动回答为“yes”;

-c  --config=[config file] 指明安装时的配置文件安装,可为HTTP,FTP,本地文件路径;

-q  --quiet 静默安装模式 不输出安装信息;

--nogpgcheck 安装时禁止进行gpg检查;

--disablerepo=repoidglob 临时禁用此处指定的repo仓库

--enablerepo=repoidglob 临时启用此处指定的repo仓库

--noplugins 禁用所有的插件安装


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


yum客户端:

配置文件:

/etc/yum.conf:为所有仓库提供公共配置

/etc/yum.repos.d/*.repo:为仓库的指向提供配置

keepcache=0(是否缓存)

debuglevel=2(调试级别)

logfile=/var/log/yum.log(指向日志文件)

exactarch=1(精确平台匹配)

obsoletes=1

gpgcheck=1(包完整性)

plugins=1(yum支持的插件机制)

installonly_limit=5(同时安装的的包个数)

distroverpkg=centos-release(支持centos)

仓库指向的定义:

[repositoryID]

name=Some name for this repository

baseurl=url://path/to/repository/

enabled={1|0}

gpgcheck={1|0}

gpgkey=URL

enablegroups={1|0}

failovermethod={roundrobin|priority}

默认为:roundrobin,意为随机挑选;

cost=

默认为1000

1. 本地源,一般是指通过系统光盘制作仓库,或者直接指向本地网络的FTP服务器仓库路径;

首先需要挂载光盘文件,可用mount命令查看是否挂载文件,再用mount -r -t iso9660 /dev/cdrom /media/cdrom挂载。

[root@localhost ~]#

[root@localhost ~]# mount -r -t iso9660 /dev/cdrom /media/cdrom/

[root@localhost ~]# ls /media/cdrom/

CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL

[root@localhost ~]# cd /media/cdrom/repodata/

[root@localhost repodata]# ls

115749f609bb070c1a0524edbe39312defa896eab1b8c8ff9844f078d1efdd95-primary.xml.gz

281832be789b989fe8c543f9de47992c0b1de080a4c7f7971a587cfa64d58f86-other.sqlite.bz2

283c19e8d3c6ff8541ddc19ea36d974e6afdc2770257a04622fc0aa5280b4322-filelists.xml.gz

38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml

6addbbcab39d561cf037917505807e1547d0d06937b539a01ae1d55a62d2a552-other.xml.gz

9346184be1deb727caf4b1ecf4a7949155da5da74af9b92c172687b290a773df-c7-x86_64-comps.xml.gz

ce678501a07f940dbe16d3e4fcb495050fd48ec429c5e8ea955e681594f90934-filelists.sqlite.bz2

f64ccdaf79da59bd21f7cf17f252ff62f2e56ea55bce5b4de16cf8ef1d13a7c8-primary.sqlite.bz2

repomd.xml

TRANS.TBL

[root@localhost repodata]#

挂载之后的目录repodata里面显示的就是CentOS系统提供的仓库镜像文件,只是对于版本没有更新,但大部分程序包都有。

[root@localhost ~]# cat /etc/yum.repos.d/mybase.repo

[mybase]

name=my base repo

baseurl=file:///media/cdrom/repodata

gpgcheck=0

enable=1

[root@localhost ~]#

这里是我写的一个简单的本地源仓库配置文件,虽然简单但是可以用,baseurl指向的是挂载后的光盘仓库路径,如果是ftp也可以改为ftp路径,切记路径的最后指向要是repodate这个目录。

2. 网络源yum仓库即把baseurl改成网络地址即可,这里我找到国内比较快的镜像站点,aliyun,163,sohu都可以,也可指向多个镜像站点,或者指向mirrorlist。

[root@localhost ~]#

[root@localhost ~]# cat /etc/yum.repos.d/mybase.repo

[mybase]

name=my base repo

baseurl=https://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/repodata/

gpgcheck=0

enable=1

[root@localhost ~]#

当然这里需要你查看下自己的系统版本号,来找网上对应的版本仓库镜像文件,你也可以用/$releasever/$basearch等变量引用来找对应的系统版本镜像文件。


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

at和crontab都是计划任务执行命令,未来的某个时间点执行一次某任务用at,而周期性在某个时间点执行任务用crontab。

at


TIME时间表示法有精确表示和模糊表示两种;

精确表示:HH:MM [YYYY-mm-dd] 例如:10:10 2018-07-11 表示。如设定时间是过去的某个时间,将再下一次时间执行。

模糊表示:noon,midnight,teatimeata,tomorrow等

从当前时间开始计算表示:at now+#[unit] 这里的unit可为min,hours,days,years。例如now +1min表示从当前时间往后的1分钟之后开始执行任务。


常用的选项:

-l:查看作业队列,相当于atq

-f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用再交互式输入;

-d:删除指定的作业,相当于atrm;

-c:查看指定作业的具体内容;

-q QUEUE:指明队列;

crond命令:

区别于at命令的执行一次失效性结束,crond是周期性执行某一任务。

crond分为

1.系统crond任务 编辑/etc/crontab文件

2.用户crond任务 编辑 /var/spool/cron/USERNAME


时间表示法:

(1) 特定值;

给定时间点有效取值范围内的值;注意:day of week和day of month一般不同时使用;

(2) *  给定时间点上有效取值范围内的所有值;

表“每..”(3) 离散取值:,在时间点上使用逗号分隔的多个值;#,#,#

(4) 连续取值:-在时间点上使用-连接开头和结束

#-#(5) 在指定时间点上,定义步长:

/#:#即步长;

而这里编辑文件内容用5个*来表示周期性不同时间段执行任务

* * * * * 第一星表示每分钟   第二个星表示每小时 第三个星表示每天 第四个星表示每月 第五个星表示每周星期几

数字表示位置前的与数字最近的表示方式来确定(有点绕)

举例来说明:

4 * * * * 就是表示每小时执行一次,但是表示每小时的第4分钟执行一次

4 5 * * *  就是表示每天执行一次,但是每天的5点4分执行一次

3 4 * * 5 表示每周执行一次 ,但是每周星期5 的4点3分执行

5 6 4 * * * 表示每个月执行一次,表示每个月每周的4号的6点5分执行一次

5 7 8 9 * 表示每年执行一次,表示每年9月8,7点5分执行一次

通过时间表示法来写:

9 8 * * 3,7 表示每周执行两次,但是每周的星期3和星期天 8点9分执行

0 8,20 * * 3,7 表示每周执行次数,表示的是每周三早上8点和晚上8点执行和星期天早上8点和晚上8点执行

0 9-18 * * 1-5 表示每周1到5 9点到18点每隔一个小时执行一次

*/5 * * * * 每5分钟执行一次

* */12 * * * 每隔12小时执行一次


crontab命令:

选项:-e 编辑任务

           -l 列出任务

           -r 移除所有任务,即删除用户的cron配置文件

           如果需要删除单个任务,crontab -e 编辑文件之后进入删除单行任务即可;

           -i 在使用-r移除所有任务时提示用户确认,与用户交互的选项;

           -u username  root用户可以为指定的用户定义其任务内容;

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


2018-09-16_第8张图片
2018-09-16_第9张图片
在图中可以发现我写了一个hour.sh脚本文件,通过crontab -e 或者直接修改/var/spool/cron/root来操作,我现在没有按题目来操作测试一下,每分钟的进行,并添加重定向到time.txt文件中,发现每分钟执行添加至,而不是覆盖

根据题目我把时间修改为要求


2018-09-16_第10张图片
到最后发现51开始没有执行每分钟一次任务


2018-09-16_第11张图片

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

文本处理三剑客:

grep, egrep, fgrep:文本过滤器

sed:Stream EDitor,流编辑器,行

awk:文本格式化工具,报告生成器

常用选项:

-n:不输出模式空间中的内容至屏幕;

-e script, --expression=script:多点编辑;

-f  /PATH/TO/SED_SCRIPT_FILE  指定编辑命令脚本文件;脚本文件中每一行为一个编辑命令;

地址定界:

1. 如果为空字符,则表示对全文进行处理,编辑查看操作;

2. # (number)数字,表示单地址,指定行(这里所说的操作对象都是文本文件,故有行数之说);也可定义/pattern/被模式匹配到的每一行;

3. 地址范围定义,#,#:1,3表示第1行到第3行的内容;#,+#;#,/pattern1/;/pat1/,/pat2/;$表示最后一行;

4. 步进地址,用~表示:“1~2”表示从第一行步进2行,就是1,3,5,7,9...行数,可表示为所有奇数行;“2~2”表示从第二行步进2行,就是2,4,6,8...行数,可表示所有偶数行。

地址定界后的编辑命令类型:

d 删除操作,表示地址定界模式匹配到的行做删除操作;整行删除;

p 显示模式空间中的行;一般与-n选项配合使用,但是要搞清楚逻辑是非关系,否则会很晕;

a \text 表示在行下方追加“text”内容,支持使用\n实现多行追加;

i \text 表示在行上方插入“text”内容,支持使用\n实现多行插入;

c \text 表示把匹配到的行替换为此处指定的文本“text”内容;

w /PATH/TO/SOMEFILE 保存模式空间中匹配到的行至指定文件中;

r /PATH/TO/SOMEFILE 读取指定的文件内容至当前文件被模式匹配待的行的后面,实现文件合并;

= 为模式空间匹配到的行打印行号;

! 条件取反;一般格式例如:地址定界!编辑命令 模式匹配到的行不执行什么编辑操作;

s///,s@@@,s###,查找替换,也支持vim编辑器命令行模式下的s查找替换功能,s@@@g修饰符g表示全局替换;

高级编辑命令:

h:把模式空间中的内容覆盖至保持空间中;

H:把模式空间中的内容追加至保持空间中;

g:把保持空间中的内容覆盖至模式空间中;

G:把保持空间中的内容追加至模式空间中;

x:把模式空间中的内容与保持空间中的内容互换;

n:覆盖读取匹配到的行的下一行至模式空间中;

N:追加读取匹配到的行的下一行至模式空间中;

d:删除模式空间中的行;

D:删除多行模式空间中的所有行;

现在主要以高级编辑命令来说明:

sed编辑视图

sed 在其自有程序内部进行,根据匹配模式/pattern/ 要求进行,并分为模式空间与保持空间,首先当我使用编辑时模式空间根据匹配模式进行选择匹配的内容并显示出来。


2018-09-16_第12张图片

1.sed  -n  'n;p'  FILE:

1.sed -n 'n;p'FILE 进行的图片详解

当第一行进行模式匹配发现n即向下匹配一行并在模式空间输出,接下来sed进行第二行匹配发现p即显示匹配内容,又因为-n 不显示匹配模式内容,2跳过,接下到第三行,发现n 即向下匹配一行在模式空间输出,即偶数行匹配


2018-09-16_第13张图片

2.sed  '1!G;h;$!d'  FILE:

 第二题我们发现要用到与保持空间的关系,首先sed匹配第一行,发现1!G,即第一行不要把保持空间的内容添加到模式空间中,然后遇到h,把模式空间内容覆盖至保持空间,即现在保持空间为1,遇到$!d,最后一行不删除,即模式空间1删除。sed匹配第二行,遇到1!G,即把保持空间内容添加至模式空间,即模式空间为2,1,保持空间为1,遇到h,即把模式空间内容覆盖至保持空间,即模式空间为0,保持空间为2,1.遇到$!d,即不是最后一行删除,所以模式空间为0,保持空间为2,1. 然后sed匹配最后一行,遇到1!G,把保持空间内容添加至模式空间,即模式空间3,2,1,保持空间为2,1,然后遇到h,即把模式空间内容覆盖至保持空间,即模式为3,2,1,保持为3,2,1,遇到$!d,即最后一行不删除并输出发现逆序显示


2018-09-16_第14张图片

3.sed  ’$!d'  FILE:取出最后一行;


2018-09-16_第15张图片

4.sed '/^$/d;G' FILE:

也是以三行为列,假如二行是空白行,13不是空白行, 首先sed模式匹配发现/^$/d 正则表达式,即删除空白行,第一行不是不删除,遇到G添加命令,保持空间为0,所以模式空间1,0,sed模式匹配第二行发现/^$/d,第二行即空白行删除,发现G,即模式空间为1,0,,第三行发现/^$/d,非空白行不删除,又把保持空间为0添加至模式空间,模式空间发现1,0,3,0规律,得出,该命令为删除空白行并为非空白行向后添加1个空白行


2018-09-16_第16张图片
2018-09-16_第17张图片

你可能感兴趣的:(2018-09-16)