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

相关推荐

  • 使用tar打包并使用gzip压缩的shell脚本应用实验

    博客目的: 练习find,gzip,tar,grep,vim等命令的使用以及shell脚本的初步使用 命令行模式下: 1、find出/目录下100M以上的文件并且查看 [root@rookie ~]# find / -size +100M | xargs ls -lh -r——–. 1 root root 128T 4月 8 16:02 /proc…

    Linux干货 2017-04-09
  • 软件包管理

    软件包的分类,主要有以下两大类    源码包    二进制包(rpm包,系统默认包) rpm包由Redhat公司提出,被众多linux发行版所采用。 优点:建立统一的数据库文件,详细记录软件包的安装、卸载等变化信息,能够自动的分析软件包依赖关系。 查询已安装的rpm软件信息: 格式:     rpm…

    Linux干货 2016-08-25
  • 高级文件系统管理2

    五、btrfs文件系统     技术预览版     Btrfs (B-tree, Butter FS, Better FS), GPL, Oracle,2007, CoW     核心特性:     …

    Linux干货 2016-09-09
  • bash基础特性(一)之命令历史,命令补存,路劲补存,命令行展开,命令执行状态结果和引用

    bash是Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。 Bourne shell是一个早期的重要shell,由史蒂夫·伯恩在1978年前后编写,并同…

    2017-09-20
  • Linux 基础知识(六.三)

    按找下列要求,写一个脚本 (1)创建目录/tmp/testdir-当前日期时间 (2)在此目录创建100个空文件:file1-file100 (3)显示/etc/passwd文件中位于偶数行的用户的用户名 (4)创建10个用户:user10-user19,密码同用户名 (5)在/tmp创建10个空文件file10-file19 脚本如下: #!/bin/ba…

    Linux干货 2016-11-14
  • Ansible安装及简单使用

    简介: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包…

    Linux干货 2016-08-07