1、rpm命令:

Linux rpm 命令用于管理套件。

rpm(redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。

RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。

rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
      安装:-i --install;
      升级:-U,--update,-F,--freshen;
      卸载:-e,--erase;
      查询:-q,--query;
      校验:-V,--verify
      数据库维护:--builddb,--initdb
(1)安装:rpm {-i|--install} [install-options] PACKAGE_FILE ...
       rpm -ivh PACKAGE_FILE...
           GENERAL OPTIONS:
              -v:verbose,详细信息
              -vv:更详细的输出
            
           [install-options]:
              -h:hash marks输出进度条;每个#表示2%的进度;
              --test:测试安装,检查并报告依赖关系及冲突消息等;
              --nodeps:忽略依赖关系,不建议;
              --replacepkgs:重新安装;

(2)升级:
        rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
        rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
            
            -U:升级或安装(如果软件包没有安装则直接安装)
            -F:升级
            
                --oldpackge:降级;
                --force:强制升级;
                
(3)卸载:
         rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...
            
            --allmatches:卸载所有匹配指定名称的程序包的各版本;
            --nodeps:忽略依赖关系;
            --test:测试卸载,dry run模式
            
(4)查询:
        rpm {-q|--query} [select-options] [query-options]
        
        select-options:
            PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;
            -a,--all:查询所有已经安装过的包;
            -f file:查询指定的文件由哪个程序包安装生成;
            -p,--package PACKAGE_FILE:用于实现对未安装的程序包进行查询操作;
            --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;
            --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个程序包所依赖;
            
        query-options
            --changelog:查询rpm包的changlog
            -l,--list:程序安装生成的所有文件列表;
            -i,--info:程序包相关的信息,版本号、大小、所属的包组,等;
            -c,--configfiles:查询指定的程序包提供的配置文件;
            -d,--docfiles:查询指定的程序包提供的文档;
            --provides:列出指定的程序包提供的所有的CAPABILITY;
            -R, --requires:查询指定的程序包的依赖关系;
            --scripts:查看程序包自带的脚本片段;
            
        用法:
            -qi PACKAGE,程序包相关的信息,版本号、大小、所属的包组,等
            -qf FILE,查询指定的文件由哪个程序包安装生成;
            -qc PACKAGE,查询指定的程序包提供的配置文件;
            -ql PACKAGE,程序安装生成的所有文件列表;
            -qd PACKAGE查询指定的程序包提供的文档;
            -qpi PACKAGE_FILE,查询未安装的程序包的相关信息;
            -qpl PACKAGE_FILE....查询未安装的程序包的文件列表
            
(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
            
(6)数据库重建:
        rpm管理器数据库路径:/var/lib/rpm/
        rpm {--initdb|--rebuilddb}
            --initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时不执行任何操作;
            --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;

常见选项使用方法:

(a)、安装软件包:rpm -ivh PACKAGE

rpm、yum、周期性计划、sed_周期性

(b)、测试安装软件包安装,查看是否需要依赖包:

rpm、yum、周期性计划、sed_计划_02

(c)、忽略依赖关系,安装软件包:

rpm、yum、周期性计划、sed_周期性_03

(d)、升级软件包:

rpm、yum、周期性计划、sed_计划_04

    a、如果软件为安装

rpm、yum、周期性计划、sed_rpm_05

    b、使用-Fvh,升级必须已安装了软件;

rpm、yum、周期性计划、sed_sed_06

(e)、卸载rpm包:

rpm、yum、周期性计划、sed_rpm_07

(f)、查询某个文件夹由哪个软件包生成:

rpm、yum、周期性计划、sed_rpm_08

(g)、查询某能力由哪个程序包提供

rpm、yum、周期性计划、sed_rpm_09

(h)、查询某能力被那些软件包所依赖

rpm、yum、周期性计划、sed_sed_10

(i)、查询软件包提供的配置文件:

rpm、yum、周期性计划、sed_rpm_11

(j)、校验软件包是否修改过:

rpm、yum、周期性计划、sed_周期性_12


2、yum命令:

yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。

基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记

    yum的命令行选项:
        --nogpgcheck:禁止进行gpg check;
        -y:自动回答为“yes”;
        -q:静默模式;
        --disablerepo=repoidgolb:临时禁用此处指定的repo;
        --enablerepo=repoidglob:临时启用此处指定的repo;
        --noplugins:禁用所有插件;        
(1)显示仓库列表:
      repolist [all|enabled|disabled]
(2)显示程序包:
    list [...]
      yum list [all | glob_exp1] [glob_exp2] [...]
      yum list {available|installed|updates} [glob_exp1] [...]
(3)安装程序包:
    install package1 [package2] [...]
(4)升级程序包:
    update [package1] [package2] [...]        
    reinstall package1 [package2] [...](重装)            
    downgrade package1 [package2] [...](降级)
(5)检查可用升级:
    check-update
(6)卸载程序包:
    remove | erase package1 [package2] [...]
(7)查看程序包information:
    info [...]
(8)查看指定的特性(可以是某个文件)是由哪个程序包所提供:
    provides | whatprovides feature1 [feature2] [...]
(9)清理本地缓存:
    clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
(10)构建缓存:
    makecache
(11)搜索:
    search string1 [string2] [...]
    以指定的关键字搜索程序包名及summary信息
(12)查看指定包所依赖的capabilities:
    deplist package1 [package2] [...]
(13)查看yum事务历史:
    history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
(14)安装及升级本地程序包:
    localinstall rpmfile1 [rpmfile2] [...]
      (maintained for legacy reasons only - use install)
    localupdate rpmfile1 [rpmfile2] [...]
      (maintained for legacy reasons only - use update)               
(15)包组管理的相关命令:
    groupinstall group1 [group2] [......]
    groupupdate group1 [group2] [......]
    grouplist [hidden] [groupwildcard] [......]
    groupremove group1 [group2] [......]
    groupinfo group1 [......]

常见选项使用方法:

a、查看启用的yum源:

rpm、yum、周期性计划、sed_sed_13

b、常看某个命令由哪个程序包提供的(未安装的也可以)

rpm、yum、周期性计划、sed_周期性_14

c、静默模式,自动回答“yes”下安装程序包

rpm、yum、周期性计划、sed_周期性_15

d、查看程序包组

rpm、yum、周期性计划、sed_计划_16

f、安装程序包组

yum groupinstall "开发及生成工作站"(如果显示中文,则需要输入中文,反之英文)


3、自建yum仓库

(1)仓库指向的定义:

         [repositoryID]                                                 #定义基础仓库名称,具有唯一性;

         name=Some name for this repository              

         baseurl=url://path/to/repository/                 #定义rpm包路径,可以是目录、链接、ftp等;

         enabled={1|0}                                                #是否启用仓库;

         gpgcheck={1|0}                                             #是否检查完整性;

         gpgkey=URL                                                 #gpg公钥地址;

         enablegroups={1|0}                                      #是否启用包组安装,默认支持;

         failovermethod={roundrobin|priority}         #一个repo内所有仓库选择方式,默认随机;

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

         cost=

         默认为1000


(2)创建本地yum源

a、挂载系统光盘当做本地源

先挂载本地光盘,也可以复制光盘文件至系统下

rpm、yum、周期性计划、sed_rpm_17

创建并编辑repo文件,在/etc/yum.repo.d/ 下

rpm、yum、周期性计划、sed_计划_18

b、自己建立软件集,建立源

使用的命令:createrepo [OPTION] <directoty>,使其所在文件夹生产repodata数据库

rpm、yum、周期性计划、sed_sed_19

接着同上创建repo文件即可;

rpm、yum、周期性计划、sed_计划_20

(3)创建网络yum源

直接利用著名的网络yum源,直接下载repo文件,前提确保能联网!我们以阿里云的yum源为例:

登录阿里云yum源,查看对应系统版本的yum源名称;

rpm、yum、周期性计划、sed_sed_21

在yum源配置文件夹下,下载yum源,我这里顺便进行了重命名,方便管理;

rpm、yum、周期性计划、sed_计划_22

(4)备份以及使系统自带yum源失效:

这里我们把系统自带的yum源直接重命名为非".repo"结尾的文件即可使其失效;

rpm、yum、周期性计划、sed_sed_23

(5)重建yum源

清除yum缓存

yum clean all

重新加载yum源

yum repolist 或者 yum list

rpm、yum、周期性计划、sed_计划_24

rpm、yum、周期性计划、sed_sed_25


4、Linux任务计划-at命令:

    在一个指定的时间执行一个指定任务,只能执行一次,且需要开启atd进程

   格式:
       at [参数] [时间]
   参数:
     -m  当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
     -l  atq的别名
     -d  atrm的别名
     -v  显示任务将被执行的时间
     -c  打印任务的内容到标准输出
     -q <列队> 使用指定的列队
     -f <文件> 从指定文件读入任务而不是从标准输入读入
     -t <时间参数> 以时间参数的形式提交要运行的任务
     
    时间:
      HH:MM[YYYY-mm-dd]
	  noon,midnight,teatime
	  tomorrow
	  now+#
	    UNIT:minutes,hours,days,OR weeks

    注意:作业执行结果是以邮件发送给提交作业的用户;

我这里直接演示一个计划任务,在1分钟后输出系统时间;新建文件,写入需要操作的命令即可。

rpm、yum、周期性计划、sed_计划_26


5、Linux周期性计划-crontab(cron)命令:

    服务程序:

        cronle:主程序包,提供了crond守护进程及相关辅助工具;

        确保crond守护进程(daemon)处于运行状态;

            CentOS 7:

                systemctl status crond.service

            CentOS 6:

                service crond status


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

     cron任务分为两类:

          系统cron任务:主要用于实现系统自身的维护;

          手动编辑:/etc/crontab文件

     用户cron任务:

          命令:crontab命令


    系统cron的配置格式:

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


         注意:

             (1)每一行定义一个周期性任务;共7个字段;

                      前5个字段     * * * * *:定义周期性时间

             user-name:运行任务的用户身份

             command to be executed:任务

             (2)此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量;

             (3)执行结果邮件发送给MAITTO指定的用户


    用户cron的配置格式:/var/spool/cron/USERNAME

         # *  *  *  *  *   command to be executed

        


             注意:

             (1)每行定义一个cron任务,共6个字段;

             (2)此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量;

             (3)邮件发送给当前用户;

            

     时间表示法:

        *     *    *    *    *

        分  时  天  月  星期

        所以最小单位为分钟,即周期性任务最小执行时间为分钟;*代表“每”意思,若在对应的*填上数值,则表示每*;

        例:

            2 3 4 5 * 意思为:每年5月份4号3点2分钟执行某某任务;

     (1)特定值:

              给定时间点有效取值范围内的值;

     注意:day of week 和 day of month 一般不同时使用;

     (2)*

             给定时间点上有效取值范围内的所有制;表“每”

     (3)离散取值:,

             在时间点上使用逗号分隔的多个值;

     (4)连续取值:-

              在时间点使用-连接开头和结束

     (5)在指定时间点上,定义步长;/

              /#;#即步长;

    

     注意:

     (1)指定的时间点不能被步长整除时,其意义将不复存在;

     (2)最小时间单位为“分钟”,想完成“秒”级任务,得需要额外借助于其他机制;

              定义成每分钟任务:而再利用脚本实现每分钟之内,循环很多次;


     crontab命令:

     crontab [-u user][-l | -e][-i]

    -e:编辑任务
    -l:列出所有任务;
    -r:移除所有任务;即删除/var/spool/cron/USERNAME文件;
    -i:在使用-r选项移除所有任务时提示用户确认;
    -u user:root用户可为指定用户管理cron任务;

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

     (1)COMMAND > /dev/null

     (2)COMMAND &> /dev/null 

    注意:定义COMMAND时,如果命令需要用到%,需要对其转义;但放置于单引号中的%不用转义亦可;


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

rpm、yum、周期性计划、sed_rpm_27

rpm、yum、周期性计划、sed_周期性_28


6、sed命令:

    格式:sed [OPTION]... {script-only-if-no-other-script} [input-file]...

        {script-only-if-no-other-script}:地址定界编辑命令,需要连在一起,不需要分开;

地址定界:
     (1)空地址:对全文进行处理;
     (2)单地址:
             #:指定行;
             /pattern/:被此模式所匹配到的每一行;可使用正则表达式;
     (3)地址范围
             #,#:
             #,+#:
             #,/pat1/
             /pat1/,/pat2/
             $:最后一行
     (4)步进:~
             1~2:所有奇数行
             2~2:所有偶数行
 编辑命令:
         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:显示替换成功的行;

    常用选项:

   -n:不输出模式空间中的内容至屏幕;
     -e script, --expression=script:多点编辑;
     -f /PATH/TO/SED_SCRIPT_FILE:直接把命令写成一个文本,每行一个编辑命令;
     -r, --regexp-extended:支持使用扩展正则表达式;
     -i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件;危险操作

实例:

匹配到的UUID,替换成uuid;

-n 不输出文件的每一行到屏幕;

p:显示匹配到并完成编辑的所在的行至屏幕;

s###:则跟vim使用方法一致;

rpm、yum、周期性计划、sed_周期性_29

显示被匹配到以外的行

rpm、yum、周期性计划、sed_rpm_30

添加注释信息至匹配到的行

rpm、yum、周期性计划、sed_计划_31