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

image.png

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

image.png

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

image.png

(d)、升级软件包:

image.png

    a、如果软件为安装

image.png

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

image.png

(e)、卸载rpm包:

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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源:

image.png

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

image.png

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

image.png

d、查看程序包组

image.png

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、挂载系统光盘当做本地源

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

image.png

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

image.png

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

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

image.png

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

image.png

(3)创建网络yum源

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

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

image.png

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

image.png

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

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

image.png

(5)重建yum源

清除yum缓存

yum clean all

重新加载yum源

yum repolist 或者 yum list

image.png

image.png

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分钟后输出系统时间;新建文件,写入需要操作的命令即可。

image.png

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

image.png

image.png

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使用方法一致;

image.png

显示被匹配到以外的行

image.png

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

image.png