linux程序包管理,定时计划以及sed简介

第一部分 linux程序包管理

rpm简介

         RPM是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放的,现在包括OpenLinux、SUSE等发行版都有采用,可以算是公认的行业标准了。RPM是一种用于互联网下载包的打包及安装工具,它包含在某些Linux发行版中。它生成具有.RPM扩展名的文件。

CentOS系统上rpm程序主要有以下几个功能:

(1)安装:

rpm {-i|--install} [install-options] PACKAGE_FILE

-v:verbose

-vv:显示更详细的安装信息

-h:以“#”显示程序包管理执行进度,每个“#”表示2%的进度

rpm -ivh PACKAGE_FILE

--test:测试安装,但不真正执行安装过程,属于dry run模式

--nodeps:忽略依赖关系

--replacepkgs:重新安装

--nosignature:不检查来源合法性

--nodigest:不检查包完整性

--noscipts:不执行程序包脚本片段

%pre:安装前脚本:--nopre

%post:安装后脚本:--nopost

%preun:卸载前脚本:--nopreun

%postun:卸载后脚本:--nopostun

说明:安装zsh的rpm包
说明:安装redis的rpm包

(2)升级:

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

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

upgrade:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”

freshen:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作

rpm -Uvh PACKAGE_FILE

rpm -Fvh PACKAGE_FILE

--oldpackage:降级

--force:强行升级

说明:升级安装redis包

(3)查询:

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

[select-options]

-q:查询包

-a:所有包

-f:查看指定的文件由哪个程序包安装生成

-p /PATH/TO/PACKAGE_FILE:针对尚未安装的程序包文件查询其安装文件信息

--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供

--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

[query-options]

--changelog:查询rpm包的更新日志

-c:查询程序的配置文件

-d:查询程序的文档

-i:information

-L:列出许可证信息

-l:查看指定的程序包安装后生成的所有文件

--scripts:程序包自带的脚本片段

-R:查询指定的程序包所依赖的CAPABILITY

--provides:列出指定程序包所提供的CAPABILITY

说明:查询刚安装的redis包,注意这里要输入的是包名(rh-redis32-redis)

(4)卸载:

rpm {e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME

--allmatches:卸载所有匹配指定名称的程序包的各版本;

--nodeps:忽略依赖关系

--test:测试卸载,dry run模式

说明:卸载刚安装的redis包,查询已没有

(5)校验:

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

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

说明:校验redis包,无输出,则说明验证通过。

(6)数据库重建:

rpm {--initdb|--rebuilddb}

initdb:初始化,如果事先不存在数据库,则新建之;否则,不执行任何操作

rebuilddb:重建,无论当前存在与否,直接重新创建数据库

说明:在指定路径下新建rpmdb

yum工具简介

        yum是rpm软件包管理器的前端管理工具。yum是一个在Fedora和RedHat以及CentOS的前端软件包管理器。基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,简化了安装步骤。

功能用法:yum [options] [command] [package]

显示仓库列表:

  repolist [all|enabled|disabled]

说明:

显示程序包:

  list

  #yum list [all | glob_exp1] [glob_exp2]

  #yum list {available|installed|updates} [glob_exp1]

安装程序包:

  install package1 [package2]

  reinstall package1 [package2](重新安装)

升级程序包:

  update [package1] [package2]

  downgrade package1 [package2](降级)

说明:查看发现bash有新版本的程序包,故用upgrade程序更新到最新版本。
说明:检查是否更新成功

检查可用升级:

  check-update

说明:检查发现yum程序有最新版未安装

卸载程序包:

  remove | erase package1 [package2]

查看程序包的简要信息:(类似于rpm -qi)

  info package

说明:查看bash程序的简要信息

查看指定的特性(可以是某文件)是由哪个程序包所提供:

  provides | whatprovides feature1 [feature2]

清理本地缓存:

  clean [ package | metadata | expire-cache | rpmdb | plugins | all ]

说明:清除本地缓存的package

构建缓存:

makecache 

据关键字搜索相关信息:

     search string1 [string2](以指定的关键字搜索程序包名及summary信息) 

查看指定包所依赖的capabilities:

  deplist [package1] [package2]

查看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(查看包组的相关信息)


yum仓库

yum仓库定义:

[repositoryID] 仓库ID

name=Some name for this repository  仓库名,功能的完整描述

baseurl=url://path/to/repository/  仓库的路径

文件服务器:四种形式

ftp://

http://

nfs://

file:///

enabled={1|0} 是否启用,默认启用

gpgcheck={1|0}  检查包的来源合法性和完整性。默认启用

gpgkey=URL  指明秘钥文件路径

enablegroups={1|0} 是否允许基于组管理程序包,默认启用

failovermethod={roundrobin|priority}  故障转移方法,baseurl有多个时的选用原则

默认为:roundrobin,意为随机挑选;

cost=  开销值,默认为1000

建立yum仓库步骤:

要建立yum仓库,首先需要在/etc/yum.repo.d/目录下建立一个已.repo结尾的文件,如下图的CenOS-local.repo的yum仓库文件:

说明:上图中[centos-source]是本地的yum源,位置是本地的centos镜像的挂载路径;[aliyun]则是网络yum源,位置则是阿里云镜像文件服务器的地址。

第二部分 at和crontab简介

        at:未来某个时间点执行一次某任务,所制定的计划任务会在指定时间执行一次,结果会以邮件的形式发送给创建计划的用户

用途用法:

at [OPTION]... TIME

TIME:

HH:MM [YYYY-mm-dd]

noon中午12点,midnight午夜12点, teatime下午4点

today,tommorow 

now+#  相对时间计时法   UNIT :minutes, hours, days, weeks

常用选项:

-l:查看作业队列,相当于atq;

-f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务

-d:删除指定的作业,相当于atrm;

#at -d #(作业号)

-c:查看指定作业的具体内容;上部分是环境信息,尾部是提交的作业内容。

-q QUEUE:指明队列;


crontab是用来进行周期性的执行某任务

向crond提交作业的方式不同于at,它需要使用专用的配置文件,此文件有固定格式,不建议使用文本编辑器直接编辑此文件;要使用crontab命令。该命令是用法如下:

crontab [-u user] [-l | -r | -e] [-i] 立即生效

-e:编辑任务;

-l:列出所有任务;

-r:移除所有任务;

-i:在使用-r选项移除所有任务时提示用户确认;

-u user:root用户可为指定用户管理cron任务;

注意:运行结果以邮件通知给当前用户;如果拒绝接收邮件:

(1) COMMAND > /dev/null

(2) COMMAND &> /dev/null

说明:crontab -l的第一行就是为这个要求,每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00,制定的计划任务。为了验证是否可用,以每分钟执行一次的计划任务测试了一下,可以正常执行。

第三部分 sed命令简介

            Sed本质上是一个编辑器,但是它是非交互式的,同时它又是面向字符流的,输入的字符流经过Sed的处理后输出。Sed本身是一个管道命令,可以分析标准输入,主要用来分析关键字的使用、统计等,此外还可以将数据进行替换、删除、选取特定行等功能。

用法用例如下:

sed [OPTION]... 'script' [input-file] ...

常用选项:

-n:不输出模式空间中的内容至屏幕;

-e script, --expression=script:多点编辑;

-f  /PATH/TO/SED_SCRIPT_FILE

-r, --regexp-extended:支持使用扩展正则表达式;

-i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;

编辑命令:

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:显示替换成功的行;

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

推荐阅读更多精彩内容