本周(7.16–7.22)第五周
1、简述rpm与yum命令的常见选项,并举例
rpm相关
rpm安装
rpm {-i|–install} [install-options] PACKAGE_FILE …
[install-options]:
-i:install
-v:显示详细的安装信息
–vv
-h:hash marks输出进度条;每个#表示2%的进度;
–test:测试安装,检查并报告依赖关系及冲突消息等;
–nodeps:忽略依赖关系,此操作有风险;
–replacepkgs:重新安装该程序包;
–force:强制安装
–nosignature:不检查包签名信息,不检查来源合法性
–nodigest:不检查包完整性信息;
rpm升级
rpm -U [install-options] PACKAGE_FILE …
rpm -F [install-options] PACKAGE_FILE …
-Uvh:后面接的软件包被安装过,会自动安装,安装过,则进行升级;
-Fvh:后面接的软件包安装过则进行升级,未安装,则该软件不会被安装(升级);
常用选项:
–oldpackage:降级;
–force:强制升级;
注意:
(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核;
(2) 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名。
rpm卸载
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME …
常用选项:
–allmatches:卸载所有匹配指定名称的程序包的各版本;
–nodeps:忽略依赖关系
–test:测试卸载并不会正真的卸载程序包;
注意:
(1) 通常文件的卸载操作用rpm -e PACKAGE_NAME就可以完成;
(2) 卸载的时候只需要给出包名,安装与升级的时候给出文件路径和包名。
查询
rpm {-q|–query} [select-options] [query-options]
[select-options]
rpm -q PACKAGE_NAME:查询指定的程序包是否已经安装;
rpm -qa查询所有已经安装过的包;
rpm -qf FILE:查询指定的文件由哪个程序包安装生成;
rpm -qpi PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
[query-options]
-ql, –list:程序安装生成的所有文件列表;
-qi, –info:程序包相关的信息,版本号、大小、所属的包组,等;
-qc, –configfiles:查询指定的程序包提供的配置文件;
-qd, –docfiles:查询指定的程序包提供的文档;
–provides:列出指定的程序包提供的所有的CAPABILITY;
–changelog:查询bash的changlog;
–requires:查询指定的程序包的依赖关系;
–scripts:查看程序包自带的脚本片断;
校验
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 # MD5码校验
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 # 文件capability的校验
Linux安装程序包来源合法性验正和完整性验正
获取并导入信任的包制作者的密钥:
对于CentOS发行版来说:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
验正:
(1) 安装此组织签名的程序时,会自动执行验正;
(2) 手动验正:rpm -K PACKAGE_FILE
数据库维护
数据库重建:
rpm管理器数据库路径:/var/lib/rpm/
rpm {–initdb|–rebuilddb} [–dbpath DIRECTORY] [–root DIRECTORY]
–initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;
当前有时不执行任何操作;
–rebuilddb:无论是否存在,重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建。
yum相关
安装程序包:
yum install package1 [package2] […]
注意:这里用的是软件包名,不是软件包的文件名
yum reinstall package1 [package2] […] 重新安装
–nogpgcheck :禁止进行gpg check
-y: 自动回答为“yes”
-q :静默模式
–noplugins :禁用所有插件
升级程序包:
yum update [package1] [package2] […]
降级程序包
yum downgrade package1 [package2] […]
检查可用升级:
yum check-update
卸载程序包:
yum remove | erase package1 [package2] […]
安装及升级本地程序包:
yum localinstall rpmfile1 [rpmfile2] […] ( 用install 替代)
yum localupdate rpmfile1 [rpmfile2] […] ( 用update 替代)
包组管理的相关命令:
yum groupinstall group1 [group2] […]
yum groupupdate group1 [group2] […]
yum grouplist [hidden] [groupwildcard] […]
yum groupremove group1 [group2] […]
yum groupinfo group1 […]
查询:
yum info […] 查看指定的特性(可以是某文件)由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2][…]
yum search string1 [string2] […] 以指定的关键字搜索程序包名及summary 信息
查看yum 事务历史:
yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
yum仓库管理:
yum repolist:列出已经配置的所有的可用仓库
yum repolist [all|enabled|disabled]
程序包查看:
yum list
yum list [all | glob_exp1] [glob_exp2] […]
yum list {available|installed|updates} [glob_exp1][…]
yum缓存管理
yum clean:清理本地缓存:
yum clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]
yum makecache:构建缓存
2、自建yum仓库,分别为网络源和本地源
yum本地源
[root@localhost ~]# mkdir /media/cdrom
[root@localhost ~]# mount -r /dev/cdrom /media/cdrom
[root@localhost ~]# mount
/dev/sr0 on /media/cdrom type iso9660 (ro,relatime)
[root@localhost ~]# vi /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
[root@localhost ~]# yum repolist
Loaded plugins: fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Repository epel-debuginfo is listed more than once in the configuration
Repository epel-source is listed more than once in the configuration
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
repo id repo name status
base/7/x86_64 CentOS-7 – Base – mirrors.aliyun.com 9,911
epel/x86_64 Extra Packages for Enterprise Linux 7 – x86_64 12,618
extras/7/x86_64 CentOS-7 – Extras – mirrors.aliyun.com 363
local local 3,894
updates/7/x86_64 CentOS-7 – Updates – mirrors.aliyun.com 970
repolist: 27,756
yum网络源
[root@localhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# yum makecache
[root@localhost ~]# cat /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever – Base – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
at相关
at命令格式: at [OPTION]… TIME
OPTION:
-l:查看作业队列,相当于atq
-f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用再交互式输入;
-d:删除指定的作业,相当于atrm;
-c:查看指定作业的具体内容;
-v:可以使用较明显的时间格式列出at中的工作列表
TIME:
HH:MM 如:18:00
在今日的HH:MM进行,若时间超过,则明天此时刻运行
HH:MM YYYY-MM-DD 如:18:00 2018-01-23
crontab相关
crontab命令格式:
crontab [-u user] file
crontab [-u user] [-l | -r | -e] [-i] [-s]
crontab -n [ hostname ]
crontab -c
选项:
-e:编辑任务( 进入vi编辑器 );
-l:列出所有任务;
-r:移除所有任务,即删除/var/spool/cron/USERNAME文件;
-i:在使用-r选项移除所有任务时提示用户确认;
-u user:root用户可为指定用户管理cron任务
执行脚本 输出时间
[root@localhost tmp]# vim date.sh
#!/bin/bash date “+%Y-%m-%d %H:%M:%S”
:wq
[root@localhost tmp]# chmod +x date.sh
[root@localhost tmp]# crontab -e
10 3,5 * * 3 root /bin/bash /tmp/date.sh
:wq
crontab: installing new crontab
[root@localhost tmp]# crontab -l
10 3,5 * * 3 root /bin/bash /tmp/date.sh
4、简述sed常用操作命令,并举例
sed语法结构
sed [OPTION]… {script-only-if-no-other-script} [input-file]…
[OPTION]
-r: 支持扩展正则表达式
-n: 静默模式
-i: 直接修改源文件
-e script1 -e script2 -e script3:指定多脚本运行
-f /PATH/TO/SCRIPT_FILE从指定的文件中读取脚本并运行
sed的地址定界
# :表示数字,指定行
$:最后一行
/regexp/:任何能被regexp所匹配到的行
\%regexp%:同上,%为regexp的边界符
地址范围
#,#:第 #行到第#行
#,+#:第 #行开始,往后再加 #行
#,/regexp/:第 #行到第一次被模式匹配之间的行
/regexp1/,/regexp2/:第一次被regexp1匹配到第一次被regexp2匹配之间的行
sed的编辑命令
d: 删除匹配到的行
a \text: 在行后面追加文本,支持使用\n实现多行追加
i \text: 在行后面插入文本,支持使用\n实现多行插入
c \text: 用text替换匹配到的行
p:打印模式空间的行
! 对地址范围取反
= 为模式匹配到的行打印行号
w /PATH/TO/SOMEFILE:保存模式空间的内容至指定文件中; 覆盖写入;
r /PATH/FROM/SOMEFILE: 读取指定文件至当前文件被模式匹配到的行后;文件合并;
查找替换
s///:查找替换 (其分隔符/可自行指定,形如s@@@, s###)
替换标记:
g:全局替换;
w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
p:显示替换成功的行
示例
删除/tmp/grub.conf文件中所有行的行首的空白字符
sed ‘s/^[[:space:]]\+//’ /tmp/grub.conf
删除/tmp/grub.conf文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
sed ‘s/^#[[:space:]]\+//’ /tmp/grub.conf
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/103754