rpm与yum命令详解、cront服务于sed文本处理工具

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

rpm包管理常见选项:

1.1安装:

rpm{-i|--install} [install-options]PACKAGE_file...

-h:hash,以#来表示安装进度;

-v,--verbose:显示安装过程中的详细信息;

--test:不执行真正的安装过程,而仅报告依赖关系以及冲突信息等;

--nodeps:忽略依赖关系,副作用是能安装成功,但是不能执行成功

--replacepkgs:覆盖安装--重新安装并覆盖原有文件;

--force:强制安装

安装时常用组合:-ivh

1.2升级:

rpm{-U|--upgrade}[install-options]package_file

-U:升级或安装

rpm{-F|--freshen}[install-options]package_file

组合使用:-Uvh,Fvh

    --test:不执行真正的安装过程,而仅报告依赖关系及冲突信息等;

--nodeps:忽略依赖关系,副作用是能安装成功,但未必能运行成功

--oldpackage:降级到旧版本;

注意:1.一定不要对内核版本执行升级,Linux允许多内核共存,所以可以直接安装多个不同版本内核;

2.如果程序包的配置文件安装后曾被修改,升级时,新版本的文件不会覆盖老版本的配置文件,而把新版本的配置文件重命名(加后缀.rpmnew)后保存。

1.3卸载:移除已经安装的程序包

rpm{-e|--erase} package_name

--allmatches:如果一个程序包同时安装多个版本,则此选项一次全部卸载之

1.4查询:

查询某包是否已经安装,以及检查安装的所有包;还可以查看某包的详细信息;

rpm {-q|--query}[select-option][query-options]

[select-options]

1.4.1查询某包是否是否安装

rpm -q package_name

1.4.2 查询已经安装的所有包

rpm -qa 

1.4.3 查询某文件是由哪些包生成的

rpm -qf /PATH/TO/SOME/FILE

1.4.4查询尚未安装的包文件的相关信息,使用-p选项;

rpm -qpi package_file

[query-options]:

1.4.5、查询某包的简要说明:

rpm -qi package_name

1.4.6查询某包生成的文件列表;

rpm -ql package_name

1.4.7查询某包安装完成后生成的所有帮助文件 ;

rpm -qd package_file

1.4.8查询某包制作时随版本变化的changelog信息;

rpm -q --changelog package_name

1.4.9查询某包提供的capabilities:

rpm -q --provides package_file

1.4.10查询某包所依赖的capabilities:

rpm -q --provides package_name

1.4.11 查询某包安装或卸载时执行的 脚本:

rpm -q --requires package_name

脚本有四类:

preinstall:安装开始之前执行的脚本;

postinstall:安装过程之后执行的脚本;

preunnistall:卸载之前执行的脚本;

postunistall:卸载之后执行的脚本;

检验:

查询包安装之后生成的文件是否发生了改变

rpm {-V|--verify}[select-options][verify-options]

常见用法:rpm -V package_name

当没有输出结果时表示软件包完整ok。当有相应结果输出表明对应的内容有修改。


Yum

yum本身也是配置文件,主要指向仓库的位置以及相关的各种配置信息:每个yum命令行可以同时指向多个仓库,配置文件由两部分组成:

1、主配置文件:/etc/yum.conf,为各仓库指向提供公共配置文件;

2、各仓库的定义:/etc/yum.repos.d/*.repo

yum 命令的使用:yum [option][command][package...]

install package1 [package2]...

upgrade-to [package1][package2]

list [...]

info[...]

groupinstall group1 [grouop2][...]

groupupdate group1[group2][...]

groupinfo group1[...]

yum 仓库管理:

      yum repolist:列出已配置的所有可用仓库

yum缓存管理:

yum clean:清理缓存

yum makecache:缓存创建,自动连接至每一个可用仓库,下载其数据,将其创建为缓存。


程序包查看

yum list  

yum grouplist

程序包安装:

yum install package1 [package2]...

重新安装(覆盖安装)

       yum reinstall package1 [package2]...

程序包升级:

yum update package1...

程序包降级:

yum downgrade package1...

检查有哪些升级可用:

yum check-update

程序包卸载:

yum remove| erase package1...

注意:所以依赖于正卸载的包会被一同卸载


包组管理:

列出所有包组yum grouplist

安装卸载升级等同包管理

yum命令的可用选项:

-y:自动回答为“yes“

-nogpgcheck:禁止做包检验

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

2.1使用光盘镜像创建本地源

2.1.1挂载光盘到指定的目录下

mount -r /dev/cdrom  /media/cdrom

2.1.2新建yum repo 配置文件,名字为CentOS-local.repo

本地源

[base]

name=CentOS 7 release 7.3

baseurl=file:///media/cdrom

enabled=1

gpgcheck=0

网络源:

[base]

name=Base Repo on jacklin

baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/

gpgcheck=0


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

3.1 at

at是由atd服务提供的,在centos6之上可以用service atd start 来启动服务;在centos 7 上要使用systemctl start atd.service 来启动服务。

at 的使用方法:at [-mldvc] TIME

-l:at -l 相当于atq命令,列出系统上所有当前用户的at队列;

-d:at -d 相当于atrm命令,可以取消一个在at排程的工作;

-v:可以详细的显示at的工作列表

-f:把at要执行的所有任务放置于文件中,让at读取此文件作为要运行的任务

如:at  -f /path/to/somefile

at -c n 来查看at队列当中指定序号的任务计划内容

3.2crontab

crondtab是由crond服务提供的,centos6 可以使用service crond start来启动crond服务,centos7采用systemctl start crond.service

cron任务有两类:系统cron和用户cron。系统cron指的是系统级别的任务计划,他的制定通过编辑/etc/crontab来实现

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name  command to be executed

其中:前面五个*表示对应的时间点;

user-name表示的是以哪个用户的身份运行;

conmand表示要运行的任务;

注意:在定义cron任务计划时,所用的命令必须为绝对路径;脚本也要使用绝对路径,或者重新定义一个拥有完整路径的环境变量。

对于命令执行成功与否的结果,默认通过邮件发送给用户,也可以通过输出重定向丢弃邮件,如下:

COMMAND > /dev/null 或者 COMMAND &> /dev/null


用户级别的周期性任务计划是通过crontab命令来实现,其也有对应的配置文件在/var/spool/cron/目录中与用户名同名的文件中

crontab命令:

-l :列出已经定义的所有任务

-e:打开编辑界面定义任务

-r:remove,移除所有任务

注意:删除一个任务应该通过删除编辑界面的行来实现

若要针对制定用户的任务计划,则应该制定 -u UDERNAME

crond中用户命令需用到%时。要进行转义

3.3制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00

10 3,5 * * 3  usr/bin/echo $(date +\F\%H-\%M-\%S)

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

sed是一种在线的编辑器,行编辑器,一次处理一行内容,把当前的行存储在缓冲区当中,该缓冲区称为“模式空间(pattern space)”。接着利用sed处理模式空间里面的内容,处理完毕后吧缓冲区的内容送至标准输出;然后接着处理下一行文本,以此循环反复,直至文件末尾。sed在处理文件时,整个文件的内容没有发生改变,除非使用重定向改变文件输出。

sed的语法结构:sed[option]...{scripts}[input-file]...[actions]

-r:支持扩展的正则表达式;

-n:静默模式;

-e scripts1 -e scripts -e scripts:指定多脚本运行;

-f /path/to/scripts_file:从指定的文件中读取脚本并运行;

-i:直接修改源文件;

sed的地址定界(抽取的域)

#:#表示数字,指定行

$:最后一行;

/regexp/:任何能够被regexp匹配到的行;

startline,endline:

#,/regexp/:表示从#开始,到第一次被/regexp/匹配的行结束,之间的所有行;

#,+n;表示从#行开始,往后的n行,包括#行;

first~step;表示从first开始,以step为公差的等差数列的所有行。

sed的编辑命令:

 d:删除模式空间中的行;

=:为模式空间中的行打印行号

a \text:在刚后面追加文本,支持使用\n实现多行追加;

i \text在行前面插入文本,支持使用\n实现多行追加;

c \text用text替换匹配到的行

p:打印模式空间的行

s/regexp/replacement/:替换由正则表达式所匹配的内容为replacement;

w /path/to/file:将模式空间的内容输出至该文件路径中

r /path/to/file:在文件的指定位置插入另一个文件的所有内容

sed功能演示:

(1)删除/etc/grub2.cfg中所有行行首的空白字符;

cat /etc/grub2.cfg

sed 's/^[[:space:]]\+//' /etc/grub2.cfg

(2)echo一个文件路径给sed命令,取出其基名;进一步的,取出其路径名;

取路径名:echo "/etc/sysconfig/network-scripts/" | sed -r 's@[^/]+/?$@@'

取基名:I don't know

sed工作机制是每次读取一行文本至模式空间中,在模式空间中完成处理,将处理的结果输出至标准输出设备;还有保持空间的概念,即在模式空间中处理后的行可能会有后续处理,因此可以把处理过的行输送至保持空间中,然后在后续的处理再传送回模式空间。

sed支持一些高级命令来实现模式空间与保持空间的交互:

h:用模式空间中的内容覆盖至保持空间;

H:将模式空间的内容追加至保持空间;

g:将保持空间的内容覆盖至模式空间;

G:将保持空间的内容追加至模式空间;

n:读取匹配到的行的下一行至模式空间;

N:读取匹配到的行的下一行并追加至模式空间中;

d:输出模式空间中的内容;

注意:命令取反功能用!;分号用于分隔脚本;

运用:1、 sed -n 'n;p' tetx.txt

取出text.txt的偶数行

2、sed '1!G;h;$!d' text.txt

将text.txt中的内容逆序排列

3、sed  'n,d' text.txt

显示奇数行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,348评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,122评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,936评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,427评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,467评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,785评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,931评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,696评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,141评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,483评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,625评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,291评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,892评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,492评论 2 348

推荐阅读更多精彩内容

  • Linux程序包的管理需要依赖程序包管理工具,程序包管理工具可以实现程序的安装、升级、卸载、查询和校验,等等相关操...
    学渣角鹿白阅读 360评论 0 1
  • 各大Linux发行版软件包管理参考(http://www.freeoa.net/osuport/botinstal...
    IRONYT阅读 7,262评论 0 12
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,629评论 18 139
  • 活的很小心,已经很久。有点累。想摆脱,借这一次的成功,内心将有更多胆量,更多自主。很久没有惊喜了,今年希望拥有,那...
    秋天的天空阅读 111评论 0 0
  • (稻盛哲学学习会)打卡第71天 姓名:沈丹萍 部门:设计部 组别:谦虚二组 【知~学习】 诵读《活法》第四章 从自...
    沈丹萍分水碶阅读 144评论 0 0