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
yum命令的用法:
显示仓库列表:
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
2、自建yum仓库,分别为网络源和本地源
配置本地源
建立本地源目录
[root@localhost ~]#mkdir /mnt/cdrom
[root@localhost ~]#mkdir /yum
挂载Centos光盘
[root@localhost ~]#mount /dev/cdrom /mnt/cdrom
[root@localhost ~]#cp -r /mnt/cdrom/* /yum
备份repo
[root@localhost ~]#cd /etc/yum.repo.d/
[root@localhost ~]#mkdir backup
[root@localhost ~]#mv CentOS-Base.repo CentOS-CR.repo CentOS-Vault.repo CentOS-Vault.repo ./backup
编辑Centos-Media.repo
[root@localhost ~]#vim Centos-Media.repo
[base]
name=Centos
baseurl=file:///yum
enable=1
gpgckeck=0
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7
清除yum缓存
[root@localhost ~]#yum clean all
配置网络源
备份源镜像文件
[root@localhost yum.repos.d]# mv centos* ./backup
下载阿里云的镜像到/etc/yum.repos.d/
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
清除yum缓存
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache
3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
at命令:
常用选项:
-l:查看作业队列,相当于atq
-f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用再交互式输入;
-d:删除指定的作业,相当于atrm;
-c:查看指定作业的具体内容;
-q QUEUE:指明队列;
crontab命令:
crontab [-u user] [-l | -r | -e] [-i]
-e:编辑任务;
-l:列出所有任务;
-r:移除所有任务;即删除/var/spool/cron/USERNAME文件;
-i:在使用-r选项移除所有任务时提示用户确认;
-u user:root用户可为指定用户管理cron任务;
举例:
[root@localhost ~]# crontab -e
no crontab for root – using an empty one
10 3,5 * * 3 root date "+%Y-%m_%d %H:%M:%S"
[root@localhost ~]# crontab -l
10 3,5 * * 3 root date "+%Y-%m_%d %H:%M:%S"
4、简述sed常用操作命令,并举例
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
sed [-nefri] ‘command’ 输入文本
常用选项:
-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑;
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶直接修改读取的档案内容,而不是由萤幕输出。
常用命令:
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
举例:(假设我们有一文件名为ab)
删除某行
[root@localhost ~] # sed '1d' test.txt #删除第一行
[root@localhost ~] # sed '$d' test.txt #删除最后一行
[root@localhost ~] # sed '1,2d' test.txt #删除第一行到第二行
[root@localhost ~] # sed '2,$d' test.txt #删除第二行到最后一行
显示某行
. [root@localhost ~] # sed -n '1p' test.txt #显示第一行
[root@localhost ~] # sed -n '$p' test.txt #显示最后一行
[root@localhost ~] # sed -n '1,2p' test.txt #显示第一行到第二行
[root@localhost ~] # sed -n '2,$p' test.txt #显示第二行到最后一行
使用模式进行查询
[root@localhost ~] # sed -n '/~/p' test.txt #查询包括关键字~所在所有行
[root@localhost ~] # sed -n '/\$/p' test.txt #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义
增加一行或多行字符串
[root@localhost ~]# cat ab
Hello!
~ is me,welcome to my blog.
end
[root@localhost ~] # sed '1a drink tea' test.txt #第一行后增加字符串"drink tea"
Hello!
drink tea
~ is me,welcome to my blog.
end
[root@localhost ~] # sed '1,3a drink tea' test.txt#第一行到第三行后增加字符串"drink tea"
Hello!
drink tea
~ is me,welcome to my blog.
drink tea
end
drink tea
[root@localhost ~] # sed '1a drink tea\nor coffee' test.txt #第一行后增加多行,使用换行符\n
Hello!
drink tea
or coffee
~ is me,welcome to my blog.
end
代替一行或多行
[root@localhost ~] # sed '1c Hi' test.txt #第一行代替为Hi
Hi
~ is me,welcome to my blog.
end
[root@localhost ~] # sed '1,2c Hi' test.txt #第一行到第二行代替为Hi
Hi
end
替换一行中的某部分
格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)
[root@localhost ~] # sed -n '/~/p' test.txt | sed 's/~/bird/g' #替换~为bird
[root@localhost ~] # sed -n '/~/p' test.txttest.txt | sed 's/~//g' #删除~
插入
[root@localhost ~] # sed -i '$a bye' test.txt #在文件ab中最后一行直接输入"bye"
[root@localhost ~]# cat test.txt
Hello!
~ is me,welcome to my blog.
end
bye
原创文章,作者:dony,如若转载,请注明出处:http://www.178linux.com/124439