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文件中所有行的行首的空白字符
7.删除/tmp/grub.conf文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/104185