第一部分 linux程序包管理
rpm简介
RPM是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放的,现在包括OpenLinux、SUSE等发行版都有采用,可以算是公认的行业标准了。RPM是一种用于互联网下载包的打包及安装工具,它包含在某些Linux发行版中。它生成具有.RPM扩展名的文件。
CentOS系统上rpm程序主要有以下几个功能:
(1)安装:
rpm {-i|--install} [install-options] PACKAGE_FILE
-v:verbose
-vv:显示更详细的安装信息
-h:以“#”显示程序包管理执行进度,每个“#”表示2%的进度
rpm -ivh PACKAGE_FILE
--test:测试安装,但不真正执行安装过程,属于dry run模式
--nodeps:忽略依赖关系
--replacepkgs:重新安装
--nosignature:不检查来源合法性
--nodigest:不检查包完整性
--noscipts:不执行程序包脚本片段
%pre:安装前脚本:--nopre
%post:安装后脚本:--nopost
%preun:卸载前脚本:--nopreun
%postun:卸载后脚本:--nopostun
(2)升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE
rpm {-F|--freshen} [install-options] PACKAGE_FILE
upgrade:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”
freshen:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作
rpm -Uvh PACKAGE_FILE
rpm -Fvh PACKAGE_FILE
--oldpackage:降级
--force:强行升级
(3)查询:
rpm {-q|--query} [select-options] [query-options]
[select-options]
-q:查询包
-a:所有包
-f:查看指定的文件由哪个程序包安装生成
-p /PATH/TO/PACKAGE_FILE:针对尚未安装的程序包文件查询其安装文件信息
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
[query-options]
--changelog:查询rpm包的更新日志
-c:查询程序的配置文件
-d:查询程序的文档
-i:information
-L:列出许可证信息
-l:查看指定的程序包安装后生成的所有文件
--scripts:程序包自带的脚本片段
-R:查询指定的程序包所依赖的CAPABILITY
--provides:列出指定程序包所提供的CAPABILITY
(4)卸载:
rpm {e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME
--allmatches:卸载所有匹配指定名称的程序包的各版本;
--nodeps:忽略依赖关系
--test:测试卸载,dry run模式
(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
(6)数据库重建:
rpm {--initdb|--rebuilddb}
initdb:初始化,如果事先不存在数据库,则新建之;否则,不执行任何操作
rebuilddb:重建,无论当前存在与否,直接重新创建数据库
yum工具简介
yum是rpm软件包管理器的前端管理工具。yum是一个在Fedora和RedHat以及CentOS的前端软件包管理器。基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,简化了安装步骤。
功能用法:yum [options] [command] [package]
显示仓库列表:
repolist [all|enabled|disabled]
显示程序包:
list
#yum list [all | glob_exp1] [glob_exp2]
#yum list {available|installed|updates} [glob_exp1]
安装程序包:
install package1 [package2]
reinstall package1 [package2](重新安装)
升级程序包:
update [package1] [package2]
downgrade package1 [package2](降级)
检查可用升级:
check-update
卸载程序包:
remove | erase package1 [package2]
查看程序包的简要信息:(类似于rpm -qi)
info package
查看指定的特性(可以是某文件)是由哪个程序包所提供:
provides | whatprovides feature1 [feature2]
清理本地缓存:
clean [ package | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
makecache
据关键字搜索相关信息:
search string1 [string2](以指定的关键字搜索程序包名及summary信息)
查看指定包所依赖的capabilities:
deplist [package1] [package2]
查看yum事务历史:
history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
安装及升级本地程序包:
localinstall rpmfile1 [rpmfile2]
(maintained for legacy reasons only - use install)
localupdate rpmfile1 [rpmfile2]
(maintained for legacy reasons only - use update)
包组管理的相关命令:
groupinstall group1 [group2](安装包组)
groupupdate group1 [group2](升级包组)
grouplist [hidden] [groupwildcard](列出包组的列表)
groupremove group1 [group2](移除包组)
groupinfo group1(查看包组的相关信息)
yum仓库
yum仓库定义:
[repositoryID] 仓库ID
name=Some name for this repository 仓库名,功能的完整描述
baseurl=url://path/to/repository/ 仓库的路径
文件服务器:四种形式
ftp://
http://
nfs://
file:///
enabled={1|0} 是否启用,默认启用
gpgcheck={1|0} 检查包的来源合法性和完整性。默认启用
gpgkey=URL 指明秘钥文件路径
enablegroups={1|0} 是否允许基于组管理程序包,默认启用
failovermethod={roundrobin|priority} 故障转移方法,baseurl有多个时的选用原则
默认为:roundrobin,意为随机挑选;
cost= 开销值,默认为1000
建立yum仓库步骤:
要建立yum仓库,首先需要在/etc/yum.repo.d/目录下建立一个已.repo结尾的文件,如下图的CenOS-local.repo的yum仓库文件:
第二部分 at和crontab简介
at:未来某个时间点执行一次某任务,所制定的计划任务会在指定时间执行一次,结果会以邮件的形式发送给创建计划的用户。
用途用法:
at [OPTION]... TIME
TIME:
HH:MM [YYYY-mm-dd]
noon中午12点,midnight午夜12点, teatime下午4点
today,tommorow
now+# 相对时间计时法 UNIT :minutes, hours, days, weeks
常用选项:
-l:查看作业队列,相当于atq;
-f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务
-d:删除指定的作业,相当于atrm;
#at -d #(作业号)
-c:查看指定作业的具体内容;上部分是环境信息,尾部是提交的作业内容。
-q QUEUE:指明队列;
crontab是用来进行周期性的执行某任务
向crond提交作业的方式不同于at,它需要使用专用的配置文件,此文件有固定格式,不建议使用文本编辑器直接编辑此文件;要使用crontab命令。该命令是用法如下:
crontab [-u user] [-l | -r | -e] [-i] 立即生效
-e:编辑任务;
-l:列出所有任务;
-r:移除所有任务;
-i:在使用-r选项移除所有任务时提示用户确认;
-u user:root用户可为指定用户管理cron任务;
注意:运行结果以邮件通知给当前用户;如果拒绝接收邮件:
(1) COMMAND > /dev/null
(2) COMMAND &> /dev/null
第三部分 sed命令简介
Sed本质上是一个编辑器,但是它是非交互式的,同时它又是面向字符流的,输入的字符流经过Sed的处理后输出。Sed本身是一个管道命令,可以分析标准输入,主要用来分析关键字的使用、统计等,此外还可以将数据进行替换、删除、选取特定行等功能。
用法用例如下:
sed [OPTION]... 'script' [input-file] ...
常用选项:
-n:不输出模式空间中的内容至屏幕;
-e script, --expression=script:多点编辑;
-f /PATH/TO/SED_SCRIPT_FILE
-r, --regexp-extended:支持使用扩展正则表达式;
-i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;
编辑命令:
d:删除;
p:显示模式空间中的内容;
a \text:在行后面追加文本“text”,支持使用\n实现多行追加;
i \text:在行前面插入文本“text”,支持使用\n实现多行插入;
c \text:把匹配到的行替换为此处指定的文本“text”;
w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;
r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
=:为模式匹配到的行打印行号;
!:条件取反;
地址定界!编辑命令;
s///:查找替换,其分隔符可自行指定,常用的有s@@@, s###等;
替换标记:
g:全局替换;
w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
p:显示替换成功的行;