简述rpm,yum,at,batch,crontab,sed命令-N28

第五周

1、简述rpm与yum命令的常见选项,并举例

前端工具:解决后端管理工具的众多不便之处;自动解决依赖关系;自动找到被依赖关系的程序包安装
yum: rehl系列系统上:rpm包管理器的前端工具;
apt-get/apt-cache: deb包管理器的前端工具;
apt-get: 安装卸载;
apt-cache: 查询/管理元数据;
zypper: suse的rpm管理器的前端工具;
dnf: Fedora 22+系统上rpm包管理器的前端工具;
包管理器:将编译好的应用程序各组成文件打包成一个或几个程序包文件,从而更方便快捷的实现安装、升级、卸载、查询等操作;
源码命名格式:
name-VERSION.tar.gz
VERSION:
major: 重大的版本分支
minor: 单个分支改变;
release: BUG或小段代码的改变;

rpm包命名格式:
app-VERSION-relase.os.arch.rpm
VERSION:major.minor.release
relase: 表示第几次打包
os: OS
arch: archetecture, 例如:i386, x64(amd64), ppc(power pcc), noarch(适用于所有平台:python或java研发,只需要虚拟机,与平台无关:)

例如:redis-3.0.2-1.centos7.x64.rpm

安装:
# rpm -ivh package1 [package2] […]
# yum instlal package1 [package2] […]
注意:默认安装最新的版本,使用老版本,需要自带版本号,例如: gcc: gnu c complier 编译器 gcc-4.5.4

# dpkg -i package.deb
# apt-get install packagename

# yum groupinstall GROUP_PACK
# dnf groupinstall GROUP_PACK

重装:
# rpm -ivh –replacepkgs package1 [package2] […]
# yum reinstall package1 [package2] […]

升级程序:
# rpm -[UF]vh package1 [package2] […]
/* 1. -Uvh 升级或安装
2. -Fvh 仅升级
注意:
1. 不建议对内核升级,安装即可
2. 如果配置文件曾被修改,升级后将新版本配置重命名:.rpmnew,卸载时将已经修改的配置重命名保存为:.rpmsave
*/

# yum update|grade package1 [package2] […]
/*
1. update,升级所有程序包及其配置及内核版本
2. grade,仅升级程序包及配置;
*/
# apt-get update
/*
在修改/etc/apt/sources.list或者/etc/apt/preferences之后运行该命令,以确保您的软件包列表是最新的
*/
# apt-get upgrade

检查升级:
# yum check-update
# dnf check-update

降级:
# yum downgrade package1 [package2] […]
# rpm -ivh –downpackage package1 [package2] […]
# dnf downgrade package1 [package2] […]

卸载程序:
# rpm -e package1 [package2] […]
# yum remove package1 [package2] […]
# dnf remove package1 [package2] […]
# dpkg -r package
# apt-get remove packagename

查询
仓库:
# yum repolist
# dnf repolist

查询结果为程序包:
是哪个包所提供特性
# rpm -q –whatprovides CAPABILITY
# rpm -q -f FILEPATH
# yum whatprovides CAPABILITY
# dnf whatprovides CAPABILITY
# dpkg-query -S file1
是哪个包所依赖特性
# rpm -q –whatrequires CAPABILITY
列表:
# rpm -qa
# yum list [all|available|updates|installed|extra|obsoletes] [glob_exp1] […]
# yum search glob_expr|string …
# dns search glob_expr|string …

# dpkg-query -W –showformat=’${Package} ${Version}\n’ > filename
# dpkg-query -l

# yum grouplist
# dnf grouplist

查询结果为包内相关:
特性:
程序包依赖的特性;
# rpm -q –requires package1 [package2] […]
# yum deplist package1 [package2] […] 并提示此依赖由谁提供(setup-2.8.71-5.el7.noarch)
程序包提供的特性;
# rpm -q –provides package1 [package2] […]
详细信息:
# rpm -q -i package1 [package2] […]
# yum info package1 [package2] […]
# dnf info package1 [package2] […]
# yum groupinfo
# dpkg-query -s capistrano
# dpkg-query -W -f=’${Status} ${Version}\n’ apache-perl
列表:
# rpm -ql
# dpkg -L package
# dpkg -l
# dpkg –unpack package.deb
# dpkg-query -L capistrano
配置环境:
# rpm -qc
# dpkg –configure package
文档:
# rpm -qd
修改日志:
# rpm –changelog
脚本查看:
# rpm -q –scripts
版本:
# yum version
# dnf –version

数据库:
# rpm –initdb|–rebuilddb [–dbpath DIR]
/*
1. -initdb:初始化数据库,数据库存在时不执行任何操作,不存在时创建新的数据库;
2. –rebuilddb:重构数据库;通过读取当前系统上所有已经安装过程序包进行重新创建;
*/
# yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
# yum makecache (yum仓库安装程序时会先比较缓存;再下载元数据缓存)
# apt-get clean
# apt-get autoclean

检验:
程序包名:rpm -V package_NAME
S file Size differs
M 权限
5 MD5值改变;
D 主次设备号
L readLink(2) 路径不匹配
U 属主
G 属组
T mTime 最近一次修改时间戳改变;
P CAPABILITY 改变;
导入密钥:rpm –import /etc/pki/rpm-gpg/
单个程序包: # rpm -K PACKAGE_FILE

事务历史:
# dnf history
# yum history

常用选项:
yum:
-y
–enablerepo
–disablerepo
–downloadonly
–downloaddir
rpm:
-p
–nodeps
–noscripts
–scripts
–test
–nosignature

 

2、自建yum仓库,分别为网络源和本地源

本地源:
1)挂载OS-Vendor光盘至某目录:例如/media/cdrom
# mkdir -v /media/cdrom
# mount -t iso9660 -r /dev/cdrom /media/cdrom
# mount
# ls /media/cdrom
2)创建配置文件(其中定义多个仓库:每个仓库[repoid]指向一个或多个yum源:)
# vim /etc/yum.repos.d/CentOS-local.repo
[base]
name=CentOS Linux release 7.1.1503 (Core)
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
网络源:
# mv /etc/yum.repos.d/CentOS-Base.repo{,.bak}
# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever – Base
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgkey=
gpgcheck=0
enabled=1

 

3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00

at, batch: 未来的某时间点执行一次任务
crontab: 周期性运行某任务,crond
执行的结果将以邮件的形式发给某个用户的邮筒:/var/spool/mail/USERNAME
确保邮件服务正常
# netstat -tunlp
//postfix的主控进程:用于传递邮件。

周期性任务计划:用crontab命令;
程序环境:
/etc/crontab
/var/spool/cron/USERNAME

系统cron: # * * * * * user-name command to be executed
用户cron: # * * * * * command to be executed

注意:
1. at运行命令执行环境可能不能通过PATH环境变量读取,一般使用“绝对路径”
2. > /dev/null 正确不管; &> /dev/null 有风险,错误结果也会被忽略。

# crontab -e
10 3,5 * * 3 /bin/bash /root/f1.sh
# vim /root/f1.sh
#!/bin/bash
#
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
date +’%F %T’

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

sed: GNU Stream EDitor,属于FSF组织,流编辑器;一次处理一行文本;

sed [OPTIONS] ‘[star_pos[,end_pos]]script’ file ..
[OPTIONS]
-r: 扩展正则表达式
-n: 不显示模式空间
-i: 原处编辑
-f /PATH/TO/SED_SCRIPT_FILE;每行一个script,不能对script加 ”
[star_pos[,end_pos]]
空地址;对全文进行处理;vim: %
# 单地址;
#,# 地址范围:
#,+# 相对地址表示法
#,/pat/
/pat/ 模式匹配行,例如:匹配空行:/^[[:space:]]*$/
/pat1/,/pat2/
1~2 所有奇数行
2~2 所有偶数行

script
命令
! 对地址范围取反
= 对匹配到的每一行编号
p 再一次显示匹配至的行
a \text: append
i \text: insert
c \text: change,范围时,替换所有行为一行。空白时,替换每一行。
d: 删除匹配到的行
w /PATH/TO/SOMEFILE:保存模式空间的内容至指定文件中; 覆盖写入;
r /PATH/FROM/SOMEFILE: 读取指定文件至当前文件被模式匹配到的行后;文件合并;
查找替换
s/PATTERN/替换为的内容/修饰符;
/:分隔符:如果在查找或替换的内容中出现”/”,需要转义: “\/”,可以使用非常用字符: # @ ,
PATTERN:使用BRE [也支持引用;],
替换为的内容:不能使用正则表达式,但可使用后向引用及&引用;
&:引用PATTERN匹配到的所有字符

修饰符: 修饰查找替换的某些功能;
g: 全局替换
w /PATH/TO/SOMEFILE:将替换成功的结果所在行保存至指定文件中;
p: 显示替换成功的行;

练习1:删除/boot/grub/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符;
~]# sed ‘s,^[[:space:]]\+,,’ /boot/grub/grub.conf
练习2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符;
~]# sed ‘s,^#[[:space:]]\+,,’ /etc/fstab
练习3:输出一个绝对路径给sed命令,取出其目录名,其行为类似于dirname
~]# echo “/etc/sysconfig/network-scripts/ifcfg-ens33” | sed ‘s,/$,,’ | sed -r ‘s#(.*/)([^/]+$)#\1#’
~]# echo “/usr/share/man/zh_TW/man8/useradd.8.gz/” | sed ‘s,/$,,’ | sed -r ‘s#(.*/)([^/]+$)#\2#’
练习4:删除以#开头,后面没有跟空白字符的行的行首的#
~]# sed -i -r ‘s,^#([^[:space:]].*),\1,’ /etc/fstab
练习5:删除所有空白行;
~]# sed ‘/^$/d’
练习6:删除/etc/fstab文件中所有以UUID开头的行;
# sed ‘/^UUID/d’ /etc/fstabg
练习7:替换/etc/passwd,root用户所在行的第一个root字符为大写字符
# sed ‘/^root:/s,root,ROOT,’ /etc/passwd
练习8:/etc/fstab文件中所有以UUID开头的行后追加abc:
# sed ‘/^UUID/a \abc’ /etc/fstabg

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

(0)
逆神阳逆神阳
上一篇 2017-12-31
下一篇 2018-01-01

相关推荐

  • Linux发行版及哲学思想

    Linux各发行版以及哲学思想 什么是Linux 为什么会有不同的Linux发行版 现有主流发行版,及其他们之间相互关系 Linux所遵循的哲学思想 什么是Linux Linux是一种自由和开放源代码的Unix-like操作系统,由当时就读于芬兰赫尔辛基大学的Linus Torvalds于1991年10月5日首次发布于互联网。Linux遵循第二版GNU通用公…

    Linux干货 2016-10-29
  • grep、正则表达式

    grep、正则表达式 grep:文本过滤(模式:pattern)工具 作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行。 模式:由正则表达式字符及文本字符所编写的过滤条件。 正则表达式:由一类特殊字符及文本所编写的模式,其中有些字符不表示字符字面意义,而表示控制或通配的功能。 正则表达式分为两类:基本正则表达式、扩展正则表…

    Linux干货 2017-04-06
  • 马哥教育网络20期+第五周课程练习

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]# grep "^[[:space:]]\+" /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又…

    Linux干货 2016-07-07
  • PXE自动化安装系统服务

    PXE PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或M…

    Linux干货 2016-11-07
  • LNAMP Shell 部署脚本

    LNAMP Shell 部署脚本 学习总结: 这个脚本,早期是出于对个人学习Shell的总结而写,应该有些年头了,目前也在一边学马哥视频的基础上陆续完善,10月初才完成LNAMP环境的分离式部署,并减少整个Shell脚本各部分的依赖关系。 我是网络班13期高级班的学员,因个人做了几年Linux运维,所以目前整个高级班的课程,我是跳着看了集群(LVS + Ke…

    Linux干货 2015-10-27
  • RPM总结(一)

    软件包基础软件包运行环境硬件、内核、应用程序的关系包管理器程序包管理器Linux不同系统上的包管理器RPM的优点rpm包命名方式一般源代码的命名rpm包的命名rpm包的分类与拆包包管理工具RPM包管理器:程序包管理器:获取程序包的途径:rpm包管理CentOS系统上使用rpm命令管理程序包:安装升级:降级降级实例more 软件包基础 包管理过程中,最常用的操…

    Linux干货 2016-08-24

评论列表(2条)

  • 马哥教育
    马哥教育 2018-01-07 17:45

    赞,常见的问题也描述出来了,比较认真,继续加油~

  • 马哥教育
    马哥教育 2018-01-07 18:03

    赞~内容上基本没什么问题~排版上能注意一下,效果会更好点~