1、简述rpm与yum命令的常见选项,并举例
rpm命令:
简介:包管理器,rmp原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。
格式:
查询:
rpm {-q|–query} [select-options] [query-options]
校验
rpm {-V|–verify} [select-options] [verify-options]
安装
rpm {-i|–install} [install-options] PACKAGE_FILE …
升级或安装
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
升级
rpm {-F|–freshen} [install-options] PACKAGE_FILE …
卸载
rpm {-e|–erase} [–allmatches] [–justdb] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …
常见用法:
安装:
格式: rpm {-i|–install} [install-options] PACKAGE_FILE …
[install-options]:
-h:hash marks输出进度条;每个#表示2%的进度;
–test:测试安装,检查并报告依赖关系及冲突消息等;
–nodeps:忽略依赖关系;不建议;
–replacepkgs:重新安装
–nosignature:不检查包签名信息,不检查来源合法性;
–nodigest:不检查包完整性信息;
举例:安装zip的rpm包
rpm -ivh zip-3.0-11.el7.x86_64.rpm
升级:
格式:rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
rpm {-F|–freshen} [install-options] PACKAGE_FILE …
-U:升级或安装;
-F:升级
[install-option]:
–oldpackage:降级;
–force:强制升级;
举例:使用-U时,如果程序未安装则会安装,-F时则只能用在升级
rpm -Uvh zip-3.0-11.el7.x86_64.rpm
卸载:
格式:rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME …
卸载选项:
–allmatches:卸载所有匹配指定名称的程序包的各版本;
–nodeps:忽略依赖关系
–test:测试卸载,dry run模式
举例:卸载zip程序
rpm -evh zip
查询:
格式: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]
安装完软件包后会生成相关的文件,如果文件发生了变动,rpm会说明变动的类型
有以下几种
S file Size differs 文件大小发生变化
M Mode differs (includes permissions and file type) 模式发生变化(包括文件权限)
5 digest (formerly MD5 sum) differs md5校验码发生变化
D Device major/minor number mismatch 设备主/次设备号不匹配
L readLink(2) path mismatch
U User ownership differs 属主发生变化
G Group ownership differs 属组发生变化
T mTime differs mtime发生变化
P caPabilities differ caPabilities 发生变化
例如:先追加一个空行到 /etc/skel/.bashrc 然后校验发现S 5 T 发生变动,即文件大小改变,md5校验和改变,mtime也发生变化
yum命令:
简介:YUM是一个交互式的基于RPM的包管理器。它可以自动执行系统更新,包括依赖性分析和基于“知识库”元数据的过时处理。它还可以执行新的包的安装,删除旧的包,并在许多其他命令/服务中执行对已安装/可用包的查询
格式:
yum [options] [command] [package …]
常见用法
显示仓库列表:
repolist [all|enabled|disabled]
显示程序包:
yum list [all | glob_exp1] [glob_exp2] […]
yum list {available|installed|updates} [glob_exp1] […]
安装程序包:
install package1 [package2] […]
reinstall package1 [package2] […] (重新安装)
举例: 安装gcc
升级程序包:
update [package1] [package2] […]
downgrade package1 [package2] […] (降级)
举例:升级vim
检查可用升级:
check-update
卸载程序包:
remove | erase package1 [package2] […]
举例:卸载unzip包
查看程序包information:
info […]
举例:查看unzip包相关信息
查看指定的特性(可以是某文件)是由哪个程序包所提供:
provides | whatprovides feature1 [feature2] […]
清理本地缓存:
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
makecache
搜索:
search string1 [string2] […] 以指定的关键字搜索程序包名及summary信息;
查看指定包所依赖的capabilities:
deplist package1 [package2] […]
举例:查看gcc包的依赖
查看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 […]
2、自建yum仓库,分别为网络源和本地源
本地源
a.先将本地的光盘挂载到/mnt
mount -r /dev/cdrom /mnt
本地镜像已经创建好了yum仓库数据
b.编写配置文件
[root@localhost /]# cat /etc/yum.repos.d/CentOS-Local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
enabled=1
c.重新建立缓存
yum clean all
yum makecache
网络源
a.安装ftp服务
yum install vsftpd
b.挂载光盘到/mnt目录
mount -r /dev/cdrom /mnt
c.复制镜像光盘文件到/var/ftp/pub/Centos-yumrepo目录下
cp -rv /mnt/* /var/ftp/pub/Centos-yumrepo/
d.编写配置文件
[root@localhost ~]# cat /etc/yum.repos.d/CentOS-Ftp.repo
[ftp_repo]
name=ftp_repo
baseurl=ftp://192.168.253.157/pub/Centos-yumrepo/
gpgcheck=0
enabled=1
e.关闭防火墙与selinux
setenforce 0
systemctl stop firewalld
f.启动ftp服务
systemctl start vsftpd
g.重建缓存
yum clean all
yum makecache
h.查看网络源仓库
yum repolist
3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
at命令:未来某个时间点执行一次某任务
格式:at [OPTION]… TIME
TIME:
HH:MM [YYYY-mm-dd]
noon,midnight, teatime
tomorrow
now+#
单位:minutes, hours, days, OR weeks
OPTION:
-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任务;
注意:运行结果以邮件通知给当前用户;如果拒绝接收邮件:
(1) COMMAND > /dev/null
(2) COMMAND &> /dev/null
注意:定义COMMAND时,如果命令需要用到%,需要对其转义;但放置于单引号中的%不用转义亦可;
练习:
每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
10 3,5 * * 3 /bin/bash /root/script/now_time.sh
[root@localhost ~]# cat /root/script/now_time.sh
#!/bin/bash
date “+%F %T ”
4、简述sed常用操作命令,并举例
sed [OPTION]... 'script' [input-file] ...
script:
地址定界编辑命令
常用选项:
-n:不输出模式空间中的内容至屏幕;
-e script, --expression=script:多点编辑;
-f /PATH/TO/SED_SCRIPT_FILE
每行一个编辑命令;
-r, --regexp-extended:支持使用扩展正则表达式;
-i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;
~]# sed -e 's@^#[[:space:]]*@@' -e '/^UUID/d' /etc/fstab
地址定界:
(1) 空地址:对全文进行处理;
(2) 单地址:
#:指定行;
/pattern/:被此模式所匹配到的每一行;
(3) 地址范围
#,#:
#,+#:
#,/pat1/
/pat1/,/pat2/
$:最后一行;
(4) 步进:~
1~2:所有奇数行
2~2:所有偶数行
编辑命令:
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:显示替换成功的行;
练习1:删除/boot/grub/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符;
~]# sed 's@^[[:space:]]\+@@' /etc/grub2.cfg
练习2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符;
~]# sed 's@^#[[:space:]]*@@' /etc/fstab
练习3:输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname;
~]# echo "/var/log/messages/" | sed 's@[^/]\+/\?$@@'
~]# echo "/var/log/messages" | sed -r 's@[^/]+/?$@@'
高级编辑命令:
h:把模式空间中的内容覆盖至保持空间中;
H:把模式空间中的内容追加至保持空间中;
g:把保持空间中的内容覆盖至模式空间中;
G:把保持空间中的内容追加至模式空间中;
x:把模式空间中的内容与保持空间中的内容互换;
n:覆盖读取匹配到的行的下一行至模式空间中;
N:追加读取匹配到的行的下一行至模式空间中;
d:删除模式空间中的行;
D:删除多行模式空间中的所有行;
实例:
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/103096