简述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 16:49
下一篇 2018-01-01 15:36

相关推荐

  • Shell脚本编程基础之一

      Linux为高效管理系统,提供了CLI命令行接口,供用户在命令提示符下输入命令,它有很多bash shell基础特,根据这些特性能够很灵活的使用命令,也支持使同时输入多个命令执行,命令之间用冒号分隔;但是要完成复杂多次重复性的操作,非常不便,系统管理工作变得很是繁忙,很难轻松完成工作任务;不过Linux的shell支持脚本编程,通过编写纯文本格…

    Linux干货 2016-08-15
  • Linux之yum详解及程序包安装

    Linux之 yum详解 及 程序包安装    在Linux常用的命令安装工具中,rpm是一个功能十分强大的软件包管理系统,它使得在Linux下安装、升级和删除软件包的工作变得容易,并且具有查询、验证软件包的功能。与图形化工具相比,使用命令行可以获得更大的灵活性。    但是rpm有一个缺点,无法解决包的依赖性,也就是…

    Linux干货 2016-08-24
  • 马哥面授班20期-第一周(计算机基础,linux入门)

    一.计算机发展历史及硬件组成部分     计算机发展历史:第一代:(1946-1957)电子管时代,第二代:(1958-1964)晶体管时代,              第三代:(1965-1970)集成电路时…

    Linux干货 2016-07-26
  • 马哥教育网络班22期第二周课程练习1-未闻花名

    1、Linux管理文件和目录的命令 命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touch 创建文件 mv 移动文件 rm 删除文件 rmdir 删除目录 1.1 pwd命令 该命令的英文解释为print working directory(打…

    Linux干货 2016-08-29
  • 第一周-Linux Basic

        本文主要介绍了计算机的组成及功能、Linux的发行版、Linux哲学思想、一些基本命令、命令帮助的获取、文件系统层级结构标准。 一、计算机的组成及功能     计算机由硬件和软件两大类组成     硬件   &n…

    Linux干货 2016-11-28
  • 常见RAID级别原理, Linux中软RAID实现方式详解

    RAID简介     RAID(Redundant Arry of Independent Disks)独立冗余阵列,旧称(Redundant Arry of Inexpensive Disks)廉价冗余阵列,其主要目的是将多个硬盘组成在一起来达到提高I/O、读写、冗余性。 RAID分为硬件RAID和软件RAID &n…

    Linux干货 2016-03-09

评论列表(2条)

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

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

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

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