N28第五周

1、简述rpm与yum命令的常见选项,并举例
2、自建yum仓库,分别为网络源和本地源
3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
4、简述sed常用操作命令,并举例

1、简述rpm与yum命令的常见选项,并举例
CentOS系统上rpm命令管理程序包:
安装、升级、卸载、查询和校验、数据库维护

rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
安装:-i, –install
升级:-U, –update, -F, –freshen
卸载:-e, –erase
查询:-q, –query
校验:-V, –verify
数据库维护:–builddb, –initdb

安装:
rpm {-i|–install} [install-options] PACKAGE_FILE …

rpm -ivh PACKAGE_FILE …

GENERAL OPTIONS:
-v:verbose,详细信息
-vv:更详细的输出

[install-options]:
-h:hash marks输出进度条;每个#表示2%的进度;
–test:测试安装,检查并报告依赖关系及冲突消息等;
–nodeps:忽略依赖关系;不建议;
–replacepkgs:重新安装

注意:rpm可以自带脚本;
四类:–noscripts
preinstall:安装过程开始之前运行的脚本,%pre , –nopre
postinstall:安装过程完成之后运行的脚本,%post , –nopost
preuninstall:卸载过程真正开始执行之前运行的脚本,%preun, –nopreun
postuninstall:卸载过程完成之后运行的脚本,%postun , –nopostun

–nosignature:不检查包签名信息,不检查来源合法性;
–nodigest:不检查包完整性信息;

升级:
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
rpm {-F|–freshen} [install-options] PACKAGE_FILE …

-U:升级或安装;
-F:升级

rpm -Uvh PACKAGE_FILE …
rpm -Fvh PACKAGE_FILE …

–oldpackage:降级;
–force:强制升级;

注意:(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核;
(2) 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

卸载:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME …

–allmatches:卸载所有匹配指定名称的程序包的各版本;
–nodeps:忽略依赖关系
–test:测试卸载,dry run模式

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

[select-options]
PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;
-a, –all:查询所有已经安装过的包;
-f FILE:查询指定的文件由哪个程序包安装生成;

-p, –package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;

–whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;
–whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

[query-options]
–changelog:查询rpm包的changlog;
-l, –list:程序安装生成的所有文件列表;
-i, –info:程序包相关的信息,版本号、大小、所属的包组,等;
-c, –configfiles:查询指定的程序包提供的配置文件;
-d, –docfiles:查询指定的程序包提供的文档;
–provides:列出指定的程序包提供的所有的CAPABILITY;
-R, –requires:查询指定的程序包的依赖关系;
–scripts:查看程序包自带的脚本片断;

用法:
-qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, …

校验:
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

包来源合法性验正和完整性验正:
来源合法性验正:
完整性验正:

获取并导入信任的包制作者的密钥:
对于CentOS发行版来说:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

验正:
(1) 安装此组织签名的程序时,会自动执行验正;
(2) 手动验正:rpm -K PACKAGE_FILE

数据库重建:
rpm管理器数据库路径:/var/lib/rpm/
查询操作:通过此处的数据库进行;

获取帮助:
CentOS 6:man rpm
CentOS 7:man rpmdb

rpm {–initdb|–rebuilddb} [–dbpath DIRECTORY] [–root DIRECTORY]
–initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;
–rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;

yum命令的用法:
yum [options] [command] [package …]

command is one of:
* install package1 [package2] […]
* update [package1] [package2] […]
* update-to [package1] [package2] […]
* check-update
* upgrade [package1] [package2] […]
* upgrade-to [package1] [package2] […]
* distribution-synchronization [package1] [package2] […]
* remove | erase package1 [package2] […]
* list […]
* info […]
* provides | whatprovides feature1 [feature2] […]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache
* groupinstall group1 [group2] […]
* groupupdate group1 [group2] […]
* grouplist [hidden] [groupwildcard] […]
* groupremove group1 [group2] […]
* groupinfo group1 […]
* search string1 [string2] […]
* shell [filename]
* resolvedep dep1 [dep2] […]
* localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
* localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)
* reinstall package1 [package2] […]
* downgrade package1 [package2] […]
* deplist package1 [package2] […]
* repolist [all|enabled|disabled]
* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
* check
* help [command]

显示仓库列表:
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] […]

查看程序包information:
info […]

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

清理本地缓存:
clean [ packages | 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仓库:
(1) 挂载光盘至某目录,例如/media/cdrom
# mount -r -t iso9660 /dev/cdrom /media/cdrom
(2) 创建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=

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

yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号;
$arch: 平台;
$basearch:基础平台;
$YUM0-$YUM9

2、自建yum仓库,分别为网络源和本地源
Yum仓库在单个RPM软件包的基础之上,进一步去解决依赖关系
Yum仓库是简化rpm软件包的安装以及管理的难度,可以解决rpm软件包的相互依赖性解决软件包之间的依赖关系。Yum仓库的配置文件均需以.repo结尾并存放在/etc/yum.repos.d/目录中的
格式说明
name=linuxprobe : yum仓库的名称描述,易于识别仓库用处
baseurl=file:///media/cdrom :提供方式包括FTP(ftp://..)、HTTP(http://..)、本地(file:///..)
enabled=1 : 设置此源是否可用,1为可用,0为禁用
gpgcheck=1 : 设置此源是否校验文件,1为校验,0为不校验
gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release :若为校验请指定公钥文件地址

3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
1、at:未来时间点执行一次任务
命令格式:at [option] TIME
TIME:定义出什么时候执行这项任务
时间格式:
HH:MM [YYYY-mm-dd];
HH:MM[am|pm] [Month] [Date];
noon(正午), midnight(午夜), teatime(下午4点),tomorrow(明天)
now+#{minutes—分钟,hours—小时,days—天, OR weeks—周}
注:at 的作业有队列,存放在/var/spool/at 中,用单个字母来表示,默认都使用 a 队列;
选项:
常见选项:
-q QUEUE:指明队列;
-l:列出指定队列中等待运行的作业;相当于atq;
-d #:删除指定作业号的作业;相当于atrm;
-c #:查看指定作业号的具体作业任务;
-v:可以使用较明显的时间格式列出at中的工作列表;
-f /path/from/somefile:从指定的文件中读取任务,不再交互式输入;(# at -f /testdir/at.txt)
-m:强制at发送邮件,表示执行完毕
例:
at10:00//设定10点执行at> ls /etc//进入到at模式中,设置要执行的任务Ctrl+d//设置完成后用Ctrl+d结束设置at-l//查看已设置的任务

crontab:周期性运行某任务

命令格式:

crontab [-u user] [-l | -r | -e] [-i]

选项:

-e:打开编辑界面定义任务;

-l:列出所有任务(仅是当前用户的所有任务);

-r:移除所有任务,即删除/var/spool/cron/USERNAME文件;

如果,删除单个任务应该通过编辑界面删除行实现;

-i:在使用-r选项移除所有任务时提示用户确认;

-u user:root用户可为指定用户管理cron任务(即为某个用户编辑计划任务)

ancorn 命令可以执行之前因故障未能执行的任务

例:

crontab -e //设置定时任务 103,5 * * 3 /root/test.sh && date +’%F%T

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

1、命令使用

基本语法

sed ‘地址命令’文件

这时的地址(address)指对哪些行作处理,地址与命令之间不必空格,最后的文件可以有多个。這条命令的意思是对文件中地址指定范围內的行执行编辑命令。

2、地址表示方式

a、起始行到结束行(StartLine,EndLine),之间用,号隔开

如:1,100表示第1到100行;

b、使用模式:/RegExp/ //里要用正则表达的格式 如:/^root/

3、/pattern1/,/pattern2/ 从第一次被模式1匹配到的行开始,至第一次被模式2匹配到的行结束中间的所有行

4、linenumber 精确指定的行,只给行号

5、startline, +N 从startline开始向后N行,一共是N+1行,从指定行开始向后N行

3、选项:

-n:静默模式,不再显示模式空间中的內容

-i:直接修改原文件

-e SCRIPT -e SCRIPT…:可同时执行多个脚本,sed‘’号中的地址命令被称为脚本

-f /PATH/TO/SED_SCRIPT:可以把多个脚本写在一个文件里,用-f读取这个文件,也能执行多个脚本(把每一个SCRIPT保存至 SED_SCRIPT文件中),最后处理file文件像这样:sed -f /path/to/scripts file

-r:表示使用扩展正则

4、命令:

d:刪除符合条件的行

例:

sed ‘1,2d’ /etc/inittab //刪除文件1-2行后显示,如果有变量替换sed后就要用双引号 sed ‘/oot/d’ /etc/fstab //刪除有oot的行,要作模式匹配要用//括起來 sed ‘1,+2d’ /etc/fstab //刪除第一行加两行共三行 sed ‘1d’ /etc/fstab //只刪除第一行 sed ‘/^\//d’ /etc/fstab //刪除/开头的行,用\转意

p:显示符合条件的行

例:

sed ‘/^\//p’ /etc/fstab //这会显示两次/开头的行,因为被匹配到的要显示一次,默认情況下模式空间中的內容也要全部显示,如只想显示一次,要用选项-n:静默模式,不再显示模式空间中的內容: sed –n ‘/^\//p’ /etc/fstab

a \string:在指定的行后面追加新行,內容为string

例:

sed ‘/^\//a \# hello world’ /etc/fstab //显示以/开头的行后面加入# hello world sed ‘/^\//a \# hello world\n# hello,linux’ /etc/fstab //找到以/开头的行后面加入# hello world,在后面加入两行,\n:换行

i \string:在指定的行前面添加新行,內容為string

r FILE:表示將指定的文件的內容添加至符合條件的行

例:

sed ‘2r /etc/issue’ /etc/fstab //將issue的內容显示在fstab文件的第二行后面显示一次 sed ‘1,2r /etc/issue’ /etc/fstab //在第一第二行后都显示一次 w FILE:將地址指定範圍內的內容另存至指定的文件中 例: sed ‘/oot/w /tmp/oot.txt’ /etc/fstab //將fstab中包含oot的行,保存到oot.txt中 s/pattern(要查找的內容)/string/修饰符:查找並替换,把符合pattern匹配范围的行换成string,pattern可以是正则,默认替换每行中第一次被模式匹配到的串 例:

sed ‘s/oot/OOT/’ /etc/fstab

sed ‘s/^\//#/’ /etc/fstab

//只替换了第一次匹配到的/,如果要全部替换就要加修飾符

修飾符

g:全局替换

i:忽略字符大小写

s///:s###,s@@@ 可用#或@及其他字符作分隔符,也可以用后项引用

例:

sed ‘s#l..e#&r#g’ sed.txt 或 sed ‘s#\(l..e\)#\1r#g’ sed.txt//将l..e:查找到的like替换成liker,love替换成lover。sed ‘s#l\(..e\)#L\1#g’ sed.txt//l..e:like替换Liker,love替换Lover。此处只能用后项引用history | sed ‘s#^[[:space:]]*##g’ //把history结果前的空格去掉,^[[:space:]]***表示一个或多个空格

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

(0)
爱溜达爱溜达
上一篇 2018-01-03
下一篇 2018-01-04

相关推荐

  • 磁盘管理

     磁盘管理  1 磁盘的结构  设备文件     I/O Ports: I/O设备地址  一切皆文件: open(), read(), write(), close()  设备类型: 块设备:block,存取单位“块”,磁盘 字符设备:char,存取单位“字符”,键盘  设备文件:关联至一个设备驱动程序…

    Linux干货 2016-08-26
  • N26-博客作业-week12

    1、请描述一次完整的http请求处理过程; (1) 建立或处理连接:接收请求或拒绝请求; (2) 接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程; (3) 处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息; (4) 访问资源:获取请求报文中请求的资源; (5) 构建响应报文: (6) 发送响应报文: (7) 记录…

    Linux干货 2017-05-23
  • Linux Basics

    计算机的组成及其功能:             CPU:运算器、控制器、寄存器、缓存             存储器:内存,RAM(Random Access Memory)   …

    Linux干货 2016-09-17
  • 关于大型网站技术演进的思考(十四)–网站静态化处理—前后端分离—上(6)

    原文出处: 夏天的森林  前文讲到了CSI技术,这就说明网站静态化技术的讲述已经推进到了浏览器端了即真正到了web前端的范畴了,而时下web前端技术的前沿之一就是前后端 分离技术了,那么在这里网站静态化技术和前后端分离技术产生了交集,所以今天我将讨论下前后端分离技术,前后端分离技术讨论完后,下一篇文章我将会以网站 静态化技术的角度回过头来…

    Linux干货 2015-02-26
  • 编译内核——制作最适合自己系统的内核

    编译内核: ·程序包的编译安装:         ./configure ,make ,make install ·前提:开发环境(开发工具、开发库),头文件:/usr/include ·开源:源代码–>可执行格式    &nbsp…

    Linux干货 2016-09-11
  • 当Web访问性能出现问题,如何深探?

    对运维或开发工程师来说,遇到访问性能问题时,最先需要定位的是问题出现在哪个环节,是网络的问题,服务端的问题,还是客户端的问题? 往往技术人员喜欢把精力放在保障后端服务的可用性方面,而对前端界面是否能正常装载,是否能完整渲染不是太关心。但从业务的角度来说,界面承载的才是最终的业务,业务是通过人机交互来实现的。 日常我们遇到哪些场景需要定位访问性能瓶颈? ·不同…

    系统运维 2017-01-09