1、简述rpm与yum命令的常见选项,并举例
前端工具:解决后端管理工具的众多不便之处;自动解决依赖关系;自动找到被依赖关系的程序包安装
yum: rehl系列系统上:rpm包管理器的前端工具;
apt-get/apt-cache: deb包管理器的前端工具;
apt-get: 安装卸载;
apt-cache: 查询/管理元数据;
zypper: suse的rpm管理器的前端工具;
dnf: Fedora 22+系统上rpm包管理器的前端工具;
包管理器:将编译好的应用程序各组成文件打包成一个或几个程序包文件,从而更方便快捷的实现安装、升级、卸载、查询等操作;
源码命名格式:
name-VERSION.tar.gz
VERSION:
major: 重大的版本分支
minor: 单个分支改变;
release: BUG或小段代码的改变;rpm包命名格式:
app-VERSION-relase.os.arch.rpm
VERSION:major.minor.release
relase: 表示第几次打包
os: OS
arch: archetecture, 例如:i386, x64(amd64), ppc(power pcc), noarch(适用于所有平台:python或java研发,只需要虚拟机,与平台无关:)例如:redis-3.0.2-1.centos7.x64.rpm
安装:
# rpm -ivh package1 [package2] […]
# yum instlal package1 [package2] […]
注意:默认安装最新的版本,使用老版本,需要自带版本号,例如: gcc: gnu c complier 编译器 gcc-4.5.4# dpkg -i package.deb
# apt-get install packagename# yum groupinstall GROUP_PACK
# dnf groupinstall GROUP_PACK重装:
# rpm -ivh –replacepkgs package1 [package2] […]
# yum reinstall package1 [package2] […]升级程序:
# rpm -[UF]vh package1 [package2] […]
/* 1. -Uvh 升级或安装
2. -Fvh 仅升级
注意:
1. 不建议对内核升级,安装即可
2. 如果配置文件曾被修改,升级后将新版本配置重命名:.rpmnew,卸载时将已经修改的配置重命名保存为:.rpmsave
*/# yum update|grade package1 [package2] […]
/*
1. update,升级所有程序包及其配置及内核版本
2. grade,仅升级程序包及配置;
*/
# apt-get update
/*
在修改/etc/apt/sources.list或者/etc/apt/preferences之后运行该命令,以确保您的软件包列表是最新的
*/
# apt-get upgrade检查升级:
# yum check-update
# dnf check-update降级:
# yum downgrade package1 [package2] […]
# rpm -ivh –downpackage package1 [package2] […]
# dnf downgrade package1 [package2] […]卸载程序:
# rpm -e package1 [package2] […]
# yum remove package1 [package2] […]
# dnf remove package1 [package2] […]
# dpkg -r package
# apt-get remove packagename查询
仓库:
# yum repolist
# dnf repolist查询结果为程序包:
是哪个包所提供特性
# rpm -q –whatprovides CAPABILITY
# rpm -q -f FILEPATH
# yum whatprovides CAPABILITY
# dnf whatprovides CAPABILITY
# dpkg-query -S file1
是哪个包所依赖特性
# rpm -q –whatrequires CAPABILITY
列表:
# rpm -qa
# yum list [all|available|updates|installed|extra|obsoletes] [glob_exp1] […]
# yum search glob_expr|string …
# dns search glob_expr|string …# dpkg-query -W –showformat=’${Package} ${Version}\n’ > filename
# dpkg-query -l# yum grouplist
# dnf grouplist查询结果为包内相关:
特性:
程序包依赖的特性;
# rpm -q –requires package1 [package2] […]
# yum deplist package1 [package2] […] 并提示此依赖由谁提供(setup-2.8.71-5.el7.noarch)
程序包提供的特性;
# rpm -q –provides package1 [package2] […]
详细信息:
# rpm -q -i package1 [package2] […]
# yum info package1 [package2] […]
# dnf info package1 [package2] […]
# yum groupinfo
# dpkg-query -s capistrano
# dpkg-query -W -f=’${Status} ${Version}\n’ apache-perl
列表:
# rpm -ql
# dpkg -L package
# dpkg -l
# dpkg –unpack package.deb
# dpkg-query -L capistrano
配置环境:
# rpm -qc
# dpkg –configure package
文档:
# rpm -qd
修改日志:
# rpm –changelog
脚本查看:
# rpm -q –scripts
版本:
# yum version
# dnf –version数据库:
# rpm –initdb|–rebuilddb [–dbpath DIR]
/*
1. -initdb:初始化数据库,数据库存在时不执行任何操作,不存在时创建新的数据库;
2. –rebuilddb:重构数据库;通过读取当前系统上所有已经安装过程序包进行重新创建;
*/
# yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
# yum makecache (yum仓库安装程序时会先比较缓存;再下载元数据缓存)
# apt-get clean
# apt-get autoclean检验:
程序包名:rpm -V package_NAME
S file Size differs
M 权限
5 MD5值改变;
D 主次设备号
L readLink(2) 路径不匹配
U 属主
G 属组
T mTime 最近一次修改时间戳改变;
P CAPABILITY 改变;
导入密钥:rpm –import /etc/pki/rpm-gpg/
单个程序包: # rpm -K PACKAGE_FILE事务历史:
# dnf history
# yum history常用选项:
yum:
-y
–enablerepo
–disablerepo
–downloadonly
–downloaddir
rpm:
-p
–nodeps
–noscripts
–scripts
–test
–nosignature
2、自建yum仓库,分别为网络源和本地源
本地源:
1)挂载OS-Vendor光盘至某目录:例如/media/cdrom
# mkdir -v /media/cdrom
# mount -t iso9660 -r /dev/cdrom /media/cdrom
# mount
# ls /media/cdrom
2)创建配置文件(其中定义多个仓库:每个仓库[repoid]指向一个或多个yum源:)
# vim /etc/yum.repos.d/CentOS-local.repo
[base]
name=CentOS Linux release 7.1.1503 (Core)
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
网络源:
# mv /etc/yum.repos.d/CentOS-Base.repo{,.bak}
# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever – Base
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgkey=
gpgcheck=0
enabled=1
3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
at, batch: 未来的某时间点执行一次任务
crontab: 周期性运行某任务,crond
执行的结果将以邮件的形式发给某个用户的邮筒:/var/spool/mail/USERNAME
确保邮件服务正常
# netstat -tunlp
//postfix的主控进程:用于传递邮件。周期性任务计划:用crontab命令;
程序环境:
/etc/crontab
/var/spool/cron/USERNAME系统cron: # * * * * * user-name command to be executed
用户cron: # * * * * * command to be executed注意:
1. at运行命令执行环境可能不能通过PATH环境变量读取,一般使用“绝对路径”
2. > /dev/null 正确不管; &> /dev/null 有风险,错误结果也会被忽略。# crontab -e
10 3,5 * * 3 /bin/bash /root/f1.sh
# vim /root/f1.sh
#!/bin/bash
#
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
date +’%F %T’4、简述sed常用操作命令,并举例
sed: GNU Stream EDitor,属于FSF组织,流编辑器;一次处理一行文本;
sed [OPTIONS] ‘[star_pos[,end_pos]]script’ file ..
[OPTIONS]
-r: 扩展正则表达式
-n: 不显示模式空间
-i: 原处编辑
-f /PATH/TO/SED_SCRIPT_FILE;每行一个script,不能对script加 ”
[star_pos[,end_pos]]
空地址;对全文进行处理;vim: %
# 单地址;
#,# 地址范围:
#,+# 相对地址表示法
#,/pat/
/pat/ 模式匹配行,例如:匹配空行:/^[[:space:]]*$/
/pat1/,/pat2/
1~2 所有奇数行
2~2 所有偶数行script
命令
! 对地址范围取反
= 对匹配到的每一行编号
p 再一次显示匹配至的行
a \text: append
i \text: insert
c \text: change,范围时,替换所有行为一行。空白时,替换每一行。
d: 删除匹配到的行
w /PATH/TO/SOMEFILE:保存模式空间的内容至指定文件中; 覆盖写入;
r /PATH/FROM/SOMEFILE: 读取指定文件至当前文件被模式匹配到的行后;文件合并;
查找替换
s/PATTERN/替换为的内容/修饰符;
/:分隔符:如果在查找或替换的内容中出现”/”,需要转义: “\/”,可以使用非常用字符: # @ ,
PATTERN:使用BRE [也支持引用;],
替换为的内容:不能使用正则表达式,但可使用后向引用及&引用;
&:引用PATTERN匹配到的所有字符修饰符: 修饰查找替换的某些功能;
g: 全局替换
w /PATH/TO/SOMEFILE:将替换成功的结果所在行保存至指定文件中;
p: 显示替换成功的行;练习1:删除/boot/grub/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符;
~]# sed ‘s,^[[:space:]]\+,,’ /boot/grub/grub.conf
练习2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符;
~]# sed ‘s,^#[[:space:]]\+,,’ /etc/fstab
练习3:输出一个绝对路径给sed命令,取出其目录名,其行为类似于dirname
~]# echo “/etc/sysconfig/network-scripts/ifcfg-ens33” | sed ‘s,/$,,’ | sed -r ‘s#(.*/)([^/]+$)#\1#’
~]# echo “/usr/share/man/zh_TW/man8/useradd.8.gz/” | sed ‘s,/$,,’ | sed -r ‘s#(.*/)([^/]+$)#\2#’
练习4:删除以#开头,后面没有跟空白字符的行的行首的#
~]# sed -i -r ‘s,^#([^[:space:]].*),\1,’ /etc/fstab
练习5:删除所有空白行;
~]# sed ‘/^$/d’
练习6:删除/etc/fstab文件中所有以UUID开头的行;
# sed ‘/^UUID/d’ /etc/fstabg
练习7:替换/etc/passwd,root用户所在行的第一个root字符为大写字符
# sed ‘/^root:/s,root,ROOT,’ /etc/passwd
练习8:/etc/fstab文件中所有以UUID开头的行后追加abc:
# sed ‘/^UUID/a \abc’ /etc/fstabg
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90682
评论列表(2条)
赞,常见的问题也描述出来了,比较认真,继续加油~
赞~内容上基本没什么问题~排版上能注意一下,效果会更好点~