N31第五周

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

一.rpm包管理

CentOS系统上使用rpm命令管理程序包:安装、卸载、升级、查询、校验、数据库维护安装

(1)安装[install-options]

rpm {-i | –install} [install-options] PACKAGE_FILE …
-h:使用”#”显示完成进度;

-v:显示安装进度的详细信息;

–test: 测试安装,但不真正执行安装,即dry run模式
–nodeps:忽略依赖关系
(2)卸载

rpm -e

–nodeps:忽略软件包所依赖的其它软件,强制执行

(3)升级

升级:

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

安装有旧版程序包,则“升级”,如果不存在旧版程序包,则“安装”

rpm {-F|–freshen} [install-options] PACKAGE_FILE..

安装有旧版程序包,则“升级”如果不存在旧版程序包,则不执行升级操作

#注意不要对内核做升级操作,Linux支持多内核版本并存

#如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留

(4)查询

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

-i:显示软件包的信息,比如名称、版本和描述信息;

-l:列出某个软件包内所包含的文件;

-R:查询安装该软件包所需要的其它软件包;

-f: 查看指定的文件由哪个程序包安装生成
-p rpmfile:针对尚未安装的程序包文件做查询操作

-c: 查询程序的配置文件
-d: 查询程序的文档

(5)效验

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

S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P capabilities differ

 

二.yum命令

用法:yum [options] [command] [package …]

显示仓库列表:yum repolist [all|enabled|disabled]

显示程序包:yum list
yum list [all | glob_exp1] [glob_exp2] […]
yum list {available|installed|updates} [glob_exp1]

安装程序包:yum install package1 [package2] […]
yum reinstall package1 [package2] […] (重新安装)#有的部分文件损坏,不能安装就需要重装

升级程序包:yum update [package1] [package2] […]
yum downgrade package1 [package2] […] (降级)

检查可用升级:yum check-update

卸载程序包:yum remove | erase package1 [package2] […]

查看程序包information:yum info […]

查看指定的特性(可以是某文件)是由哪个程序包所提供:yum provides | whatprovides feature1 [feature2]

清理本地缓存:清除/var/cache/yum/$basearch/$releasever缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

构建缓存:yum makecache

查看指定包所依赖的capabilities:yum deplist package1 [package2] […]

查看yum事务历史:
yum history [info|list|packages-list|packages-info|
summary|addon-info|redo|undo|
rollback|new|sync|stats]
yum history                      #查询执行过的yum事务
yum history info 6
yum history undo 6       #取消第8步,可以把依赖的包也卸载
日志 :/var/log/yum.log

包组管理的相关命令:
yum groupinstall group1 [group2] […]
yum groupupdate group1 [group2] […]
yum grouplist [hidden] [groupwildcard] […]
yum groupremove group1 [group2] […]
yum groupinfo group1 […]

yum的命令行选项:
–nogpgcheck:禁止进行gpg check
-y: 自动回答为“yes”
-q:静默模式
–disablerepo=repoidglob:临时禁用此处指定的repo
–enablerepo=repoidglob:临时启用此处指定的repo
–noplugins:禁用所有插件

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

一.配置本地源

(1)建立本地源目录

mkdir  /mnt/cdrom    #创建的空的文件夹用于挂载iso镜像文件

mkdir /yum    #为了让iso镜像文件能够被像文件一样被便利地读取利用,将iso文件挂载在一个空的文件里面

(2)挂载Centos光盘

mount /dev/cdrom /mnt/cdrom   #将读入的光盘挂载在设定好的文件夹

cp -r /mnt/cdrom/* /yum   #将光盘内容复制至本地源目录

(3)备份repo

mkdir /etc/yum.repo.d/backup   #创建/etc 下的一个空文件夹用于备份原来的yum源读取文件

mv /etc/yum.repos.d/* /etc/yum.repo.d/backup/  # 备份yum仓库指定文件

(4)编辑wcyum.repo

cd /etc/yum.repo.d/

vim wcyum.repo

[base]                                                #repositoryid,用于指定一个仓库,唯一值     

name=wc                                         #指定仓库的名称

baseurl=file:///yum                      #用于指定本仓库的URL,可以是http:  ftp:  file:  三种格式

enable=1                                           #用于指定是否启用本仓库,默认值为1,即可用

gpgckeck=0                                     # 用于指定是否检查软件包的gpg签名

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7       #用于指定gpg签名文件的URL

(5)刷新测试

yum clean all       #清空本地/var/cache/yum容器清单列表旧数据(既yum缓存)

yum repolist  #列出所有的可用的yum仓库,执行这个命令,会重读yum源设置志向文件,刷新本地容器清单列表

二.配置网络源

(1)备份源镜像文件

mv centos* ./backup

(2)下载阿里云的镜像到/etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo

http://mirrors.aliyun.com/repo/Centos-7.repo

(3)编辑base.repo

vim/etc/yum.repos.d/base.repo
[base]
name=ftp centos7.4
baseurl=ftp://http://mirrors.aliyun.com/repo/Centos-7.repo/pub/centos/$releasever/os/$basearch/
gpgcheck=0

enable=1

(4)清除缓存

yum clean all            清空缓存

yum makecache       建立缓存

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

at命令:at [option] TIME
 常用选项:
-V 显示版本信息:
-l: 列出指定队列中等待运行的作业;相当于atq
-d: 删除指定的作业;相当于atrm
-c: 查看具体作业任务
-f /path/from/somefile:从指定的文件中读取任务
-m:当任务被完成之后,将给用户发送邮件,即使没有标准输出

at时间格式
 HH:MM 02:00
在今日的 HH:MM 进行,若该时刻已过,则明天此时执行任务
 HH:MM YYYY-MM-DD 02:00 2016-09-20
规定在某年某月的某一天的特殊时刻进行该项任务
 HH:MM[am|pm] [Month] [Date]
04pm March 17
17:20 tomorrow
 HH:MM[am|pm] + number [minutes|hours|days|weeks]
在某个时间点再加几个时间后才进行该项任务
now + 5 minutes
02pm + 3 days

执行方式:
1)交互式 2)输入重定向 3)at –f 文件
 依赖与atd服务,需要启动才能实现at任务
at队列存放在/var/spool/at目录中
 /etc/at.{allow,deny}控制用户是否能执行at任务
白名单:/etc/at.allow 默认不存在,只有该文件中的用户
才能执行at命令
黑名单:/etc/at.deny 默认存在,拒绝该文件中用户执行
at命令,而没有在at.deny 文件中的使用者则可执行
如果两个文件都不存在,只有 root 可以执行 at 命令

 crontab命令:
crontab [-u user] [-l | -r | -e] [-i]
-l: 列出所有任务;
-e: 编辑任务;
-r: 移除所有任务;
-i:同-r一同使用,以交互式模式移除指定任务
-u user: 仅root可运行,指定用户管理cron任务

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

echo “date +”%Y-%m-%d %H:%M:%S”” >> /tmp/date.sh

crontab -e

10 3,5 * * 3 /bin/bash /tmp/date.sh

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

sed是一种流编辑器,它一次处理一行内容

功能:主要用来自动编辑一个或多个文件,简化对文件的反复
操作,编写转换程序等

用法:sed [option]… 'script' inputfile…”

常用选项

-n:不输出模式空间内容到屏幕,即不自动打印
-e: 多点编辑
-f:/PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本
-r: 支持使用扩展正则表达式
-i.bak: 备份文件并原处编辑

编辑命令:
d: 删除模式空间匹配的行,并立即启用下一轮循环
p:打印当前模式空间内容,追加到默认输出之后
a [\]text:在指定行后面追加文本
支持使用\n实现多行追加
i [\]text:在行前面插入文本
c [\]text:替换行为单行或多行文本
w /path/somefile: 保存模式匹配的行至指定文件
r /path/somefile:读取指定文件的文本至模式空间中
匹配到的行后
=: 为模式空间中的行打印行号
!:模式空间中匹配行取反处理

s///:查找替换

一.常用操作

1.处理/etc/fstab路径,使用sed命令取出其目录名和基名
echo "/etc/fstab" |sed -rn 's_(.*/)(.+)/?_\1_p' 取目录
echo "/etc/fstab" |sed -rn 's_(.*/)(.+)/?_\2_p' 取基名

2.利用sed 取出ifconfig命令中本机的IPv4地址
ifconfig ens33 | sed -n '2p' |sed 's@inet@ $g' | sed 's@netmask.*@@g'
ifconfig ens33 | sed -n '2p' |sed -r 's@.*inet(.*)netmask.*@\1@'
ifconfig ens33 | sed -r -n '2s@.*inet(,*) netmask.*@\1@p'
ifconfig ens33 | sed -r ‘2!d;s/.*inet //;s/ netmask.*//'

3.统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数
ls /misc/cd/Packages/*.rpm |sed -r 's/.*\.(.+)\.rpm$/\1/' |sort |uniq -c

4.统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和sed两种方法分别实现)
sed 's/[^[:alpha:]]/\n/g' /etc/init.d/functions |sed '/^$/d' |sort |uniq -c
grep -Eo "[[:alpha:]]+" /etc/init.d/functions |sort |uniq -c

5.将文本文件的n和n+1行合并为一行,n为奇数行
seq 1 10 |sed 'N;s/\n/ /'
seq 1 10 |xargs -n2

6.删除/tmp/grub.conf文件中所有行的行首的空白字符

sed ‘s/^[[:space:]]\+//’ /tmp/grub.conf

7.删除/tmp/grub.conf文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

sed ‘s/^#[[:space:]]\+//’ /tmp/grub.conf

 

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/104185

(0)
上一篇 2018-07-30 09:57
下一篇 2018-07-30 19:19

相关推荐