第五周作业

1、简述rpm与yum命令的常见选项,并举例
rpm包安装:
            rpm {-i|–install} [install-options] PACKAGE_FILE …

                常用格式:要有文件路径;
                rpm -ivh PACKAGE_FILE …

                [install-options]安装选项:
                    -h, –hash:hash marks输出进度条,一共50个#,每个#进度表示2%;
                    –test:测试安装,检查并报告依赖关系及冲突消息等,dry run模式;
                    –nodeps:忽略依赖关系(安装后使用可能有问题),不建议;
                    –replacepkgs:重新安装;

                    –noscripts:不执行rpm包自带的四类脚本;
                    –nopre:不执行rpm包自带的preinstall脚本;
                    –nopost:不执行rpm包自带的postinstall脚本;
                    –nopreun:不执行rpm包自带的preuninstall脚本;
                    –nopostun:不执行rpm包自带的postuninstall脚本;
        例如:
            ]# mount -r /dev/cdrom /media:虚拟机上的光盘连接后即可挂载;
            ]# rpm -ivh –test /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm:测试安装;
            ]# rpm -ivh –replacepkgs /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm
            ]# rpm -ivh /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm

rpm包升级:
            rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
            rpm {-F|–freshen} [install-options] PACKAGE_FILE …
                -U:表示升级或安装(发现旧版本则升级,没发现则直接安装);
                -F:升级(只完成升级旧版本);
                –nodeps:
                –test:
                –noscripts

                常用格式:
                rpm -Uvh PACKAGE_FILE …
                rpm -Fvh PACKAGE_FILE …

                –oldpackage:降级安装(新版程序包不兼容时,要回滚);
                –force:强制升级;
        例如:
            ]# rpm -Uvh /media/Packages/zsh-5.0.2-7.el7_1.2.x86_64.rpm:升级rpm包;

 rpm包卸载:
            rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME …
                –allmatches:卸载所有匹配指定名称的程序包的各版本;
                –nodeps:忽略依赖关系;
                –test:测试卸载,dry run模式;

 rpm包查询:
            rpm {-q|–query} [select-options] [query-options]
                -q
            [select-options]:挑选查询哪些包;
                PACKAGE_NAME:查询指定程序包是否安装及会显示详细版本信息;
                -a,–all:查询所有安装过的包;
                -f FILE:查询指定文件(要写绝对路径)由哪个程序包安装生成的;
                -g,–group GROUP:查询指定包组中包含的程序包;

                -p,–package package_file:对未安装的程序包查询(结合query-options选项),但要有rpm安装文件,否则无法查询;

                –whatprovides CAPABILITY:查询指定的capability由哪个程序包提供(结合query-options选项);
                –whatrequires CAPABILITY:程序指定的capability被哪个程序包依赖(结合query-options选项);
        例如:
            ]# rpm -q zsh:查询指定rpm程序包;
            ]# rpm -qa:查询所有已安装的rpm程序包,可同grep搭配使用;

            [query-options]:查询包的信息;
                –changelog:查询指定rpm包的修改日志changelog;
                -i:查询指定rpm包相关的详细信息(版本、作者、功能描述、大小、所属包组…);
                -l:查询指定rpm包安装后生成的所有文件列表;(二进制程序、配置文件、库文件、帮助文档)
                -c:查看指定rpm程序的配置文件;
                -d,–docfiles:查看指定rpm程序包提供的文档;
                –provides:查看指定rpm程序包提供所有的capability功能;
                -R,–requires:查询指定rpm包的依赖关系;
                –scripts:查看rpm程序包自带的四类脚本程序片段(preinstall、postinstall、preuninstall、postuninstall);
        例如:
            ]# rpm -q –changelog zsh:查询指定rpm包修改日志;
            ]# rpm -qi zsh:查询指定rpm包相关详细信息;
            ]# rpm -ql zsh:查询指定rpm包生成的所有文件列表;
            ]# rpm -qc zsh:查询指定rpm包所包含的配置文件;
            ]# rpm -qd zsh:查询指定rpm包提供的文档;
            ]# rpm -q –provides bash:查询指定rpm包提供的所有能力;
            ]# rpm -q –whatprovides bash:查询指定rpm包由哪个程序包提供;
            ]# rpm -q –whatprovides 'config(bash)'
            ]# rpm -q –whatrequires bash:查询指定rpm包被哪个程序包所依赖;
            ]# rpm -q -R zsh:查询指定rpm包的依赖关系;
            ]# rpm -q –scripts zsh:查询指定rpm包自带的四类脚本程序代码;

        查询未安装的rpm包的相关信息,但必须有rpmb的安装文件才能查询;    
            ]# rpm -qpl /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm:查询未安装的rpm包安装后生成的所有文件列表;    
            ]# rpm -qpi /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm:查询未安装的rpm包相关详细信息;
            ]# rpm -qpc /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm:查询未安装的rpm包配置文件;
            ]# rpm -qpd /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm:查询未安装的rpm包提供的文档;
            ]# rpm -qp –scripts /media/Packages/zsh-5.0.2-7.el7.x86_64.rpm:查询未安装的rpm包自带的四类脚本程序片段;

rpm包校验:
            rpm {-V|–verify} [select-options] [verify-options]
                –nodeps:不校验依赖关系;
                –nodigest:不检查包完整性;
                –nofiles:不校验文件属性是否发生改变;
                –nosignature:不检查包或头部签名;
        例如:
            ]# rpm -V –nofiles zsh

 

 

 yum命令的用法:
        yum [options] [command] [package …]
显示仓库列表:
        yum repolist [all|enabled|disabled]
            all:显示所有仓库;
            enabled:仅显示启用的仓库;(默认)
            disabled:仅显示禁用的仓库;
        例如:
            ]# yum repolist

    显示程序包:
        list子命令选项
            yum list [all | glob_exp1] [glob_exp2] […]
                all:显示所有可用的和已安装的;
            yum list {available|installed|updates} [glob_exp1] […]
                available:显示仓库中有但尚未安装的;
                installed:显示已安装的包;
                updates:显示仓库中可用的升级包;

                extras:显示仓库中额外的;
                obsoletes:显示废弃的程序包;
        例如:
            ]# yum list
            ]# yum list php*:显示所有以php开头的程序包;

    安装程序包:
        yum install package1 [package2] […]
        例如:
            ]# yum install gcc:依赖关系的包自动安装,确认输入y,才安装,否则退出;

            注意:yum安装时默认安装最新版本的程序包,也可手动安装指定程序包的版本;

    重新安装程序包:不用卸载,覆盖安装;
        yum reinstall package1 [package2] […]:重新安装(基于覆盖方式安装),类似于rpm  -ivh –replacepgks;

    升级程序包:
        yum update [package1] [package2] […]

        yum downgrade package1 [package2] […]
            降级安装相当于rmp -Uvh –oldpackages;

    检查可用的升级包:
        yum check-update

    卸载程序包:依赖于此程序包的每一个包也会被卸载;
        yum remove | erase package1 [package2] […]
        例如:
            ]# yum remove cpp:卸载gcc程序包,会显示同时卸载gcc,因为它依赖于cpp,确认输入y,直接敲回车表示n;

    查看程序包的简要信息:
        yum info […]
        例如:
            ]# yum info gcc:查看gcc程序包简要信息,相当于rpm -qi;

    查看指定特性(可以是某文件)是由哪个程序包提供的:
        yum provides | whatprovides feature1 [feature2] […]
        类似rpm -qf;
        例如:
            ]# yum provides gcc:查看gcc程序包是由哪个程序包提供的;
            ]# yum /bin/ls /bin/cat:查看ls,cat是由哪个程序包提供的;

    清理本地缓存:
        yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

    构建(创建生成)缓存:yum下载程序时会自动从仓库中下载元数据缓存到本地的;
        yum makecache

    搜索:
    以指定的关键字搜索程序包名及summary信息;
        yum search string1 [string2] […]
        例如:
            ]# yum search bash:搜索包含bash的程序包包名和summary的信息,是模糊匹配;

    查看指定包所依赖的capabilities关系:
        yum deplist package1 [package2] […]
        例如:
            ]# yum deplist gcc:显示gcc依赖于哪些程序包且这些程序包是由谁提供的;

    查看rmp包db版本信息:
        yum version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]

    查看yum事务历史:
        yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
        事务就是执行yum命令,查询不算事务,一般包括安装、升级、卸载等,修改类的操作才算事务;
        例如:
            ]# yum history:查看yum的历史事务信息;            
            ]# yum history summary:查看yum历史事务的摘要信息;
            ]# yum history list:查看yum历史事务列表,默认操作;
            stats:查看的是统计数据;

    安装及升级本地程序包:
        而不是仓库中的包,有rmp不具备的功能,能解决依赖关系,centos6以后直接使用yum install安装了;
            yum localinstall rpmfile1 [rpmfile2] […]
               (maintained for legacy reasons only – use install)
            yum localupdate rpmfile1 [rpmfile2] […]
               (maintained for legacy reasons only – use update)

    包组管理的相关命令:
        yum groupinstall group1 [group2] […]:安装包组;
        yum groupupdate group1 [group2] […]:升级包组;
        yum grouplist [hidden] [groupwildcard] […]:查看包组;
        yum groupremove group1 [group2] […]:移除包组;
        yum groupinfo group1 […]:查看包组相关信息,就是包组内有多少程序包等信息;
            Mandatory Packages:必须安装的包;
            Default Packages:默认安装的包;
            Optional Packages:可选安装的包;
        例如:
            ]# yum grouplist:显示包组; 
            ]# yum groupinstall "Development Tools":安装Deelopment Tools包组(并非安装包组内的所有包),并依赖关系,确认安装输入y;
            ]# yum groupinfo "Development Tools":查看包组信息,包括必须安装的包、默认安装的包、可选包(如果被依赖也会安装);

    注意:yum源仓库指向必须升级不能降级;

 

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

配置本地源

    建立本地源目录
    [root@localhost ~]#mkdir /mnt/cdrom
    [root@localhost ~]#mkdir /yum

    挂载Centos光盘
    [root@localhost ~]#mount /dev/cdrom /mnt/cdrom
    [root@localhost ~]#cp -r /mnt/cdrom/* /yum

    备份repo
    [root@localhost ~]#cd /etc/yum.repo.d/
    [root@localhost ~]#mkdir backup
    [root@localhost ~]#mv CentOS-Base.repo CentOS-CR.repo CentOS-Vault.repo CentOS-Vault.repo ./backup
    编辑Centos-Media.repo
    [root@localhost ~]#vim Centos-Media.repo

    [base]
    name=Centos
    baseurl=file:///yum
    enable=1
    gpgckeck=0
    gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7

    清除yum缓存
    [root@localhost ~]#yum clean all

配置网络源

    备份源镜像文件
    [root@localhost yum.repos.d]# mv centos* ./backup

    下载阿里云的镜像到/etc/yum.repos.d/
    [root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo
    http://mirrors.aliyun.com/repo/Centos-7.repo

    清除yum缓存
    [root@localhost yum.repos.d]# yum clean all
    [root@localhost yum.repos.d]# yum makecache

 

3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
    at命令:
            常用选项:
                -l:查看作业队列,相当于atq
                -f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用再交互式输入;
                -d:删除指定的作业,相当于atrm;
                -c:查看指定作业的具体内容;
                -q QUEUE:指明队列;

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

 

任务内容:

1、执行crontab -e 命令,弹出编辑框;

2、输入   10 3,5 * *  3 /bin/date + %F %H:%D:%S

3、保存退出

 

    sed工作原理:
        将文本中一次读取一行,并且复制一份到sed自己的工作区域,这个工作区域叫作模式空间(pattern space),在模式空间进行文本处理以后,将结果送到标准输出;默认sed对文本的每一行做处理操作,也可以定义sed仅处理符合条件(基于正则表达式来进行文本过滤)的行;(默认不对原文件进行编辑);

        所以在模式空间中读取一行后,首先判断是否符合sed所指定的模式,如果符合则进行定义的编辑操作,将结果输出到标准输出,如果不匹配则默认输出到标准输出(默认是输出操作),也可以定义不输出没被sed模式匹配到的行;然后读取第二行,以此类推;

        sed内部不仅有模式空间,还有一个空间叫hold space保持空间,可以将被sed模式匹配到的行编辑完以后存放到保持空间里(高级用法);

        sed [OPTION]… ‘script’ [input-file]…
            script:
                地址定界编辑命令

            常用选项:
                -n:不输出模式空间中的内容至屏幕;
                -e script, –expression=script:实现多点编辑;
                例如:
                    ]# sed -e 's@^#[[:space:]]*@@' -e '/^UUID/d' /etc/fstab

                -f /PATH/TO/SED_SCRIPT_FILE:每行一个sed编辑命令,保存一个文件,读取文件来进行编辑操作;
                -r, –regexp-extended:支持使用扩展正则表达式;
                -i[SUFFIX], –in-place[=SUFFIX]:直接编辑原文件;

            地址定界:(类似vim中末行操作)
                (1)不给地址:表示对全文进行处理;
                (2)单地址:
                    #:指定第#行
                    /pattern/:被此模式所匹配到的每一行;
                (3)地址范围
                    #,#:从第#行开始到第#行结束;
                    #,+#:从第#行开始,加#行;
                    #,/pat1/:从第#行开始,到第一次被模式匹配的行结束;
                    /pat1/,/pat2/:从被模式1匹配到的第一行开始,到被模式2匹配到的第一行结束;
                    $:最后一行;
                (4)步进:~
                    1~2:表示从1开始,步进2行,如3,5,7行即所有奇数行;
                    2~2:表示所有偶数行;

            sed常用编辑命令:
                d:删除模式空间内容;
                例如:
                    ]# sed '1,5d' /etc/fstab:删除第1到5行;
                    ]# sed -n '1,5d' /etc/fstab:删除第1到5行,同时不显示模式空间中没被匹配的行;
                    ]# sed '3d' /etc/fstab:删除第3行;
                    ]# sed '/^UUID/d' /etc/fstab:删除以UUID开头的行;
                    ]# sed '1~2d' /etc/fstab:显示偶数行,即删除奇数行;
                p:显示模式空间中内容;(根据地址定界和编辑命令后显示)
                例如:
                    ]# sed '1~2p' /etc/fstab:显示2遍所有奇数行,即偶数行没被匹配显示一遍,又显示一遍匹配到的奇数行;
                    ]# sed -n '1~2p' /etc/fstab:显示一遍所有奇数行,即不显示没被匹配的行;
                    ]# sed '1~2d' /etc/fstab:显示偶数行,即删除奇数行;
                a \test:在匹配到的行后面追加文本"test",支持使用\n实现多行追加;
                i \test:在匹配到的行前面插入文本"test",支持使用\n实现多行插入;
                例如:
                    ]# sed '3i \new line' /etc/fstab:在第三行上面插入一行new line;
                    ]# sed '3a \new line' /etc/fstab:在第三行下面插入一行new line;
                    ]# sed '3a \new line\nanother new line' /etc/fstab:在第三行下面插入2行;
                    ]# sed '/^UUID/a \# add new device base on UUID' /etc/fstab:在UUID开头的行下面添加一行# add new device base on UUID;
                c \test:把匹配到的行替换为此处指定的文本"test";
                例如:
                    ]# sed '/^UUID/c \# add new device base on UUID' /etc/fstab:把UUID开头的行替换为# add new device base on UUID;
                w /PATH/TO/SOMEFILE:保存模式空间中匹配到的行至指定的文件中;
                例如:
                    ]# sed -n '/^[^#]/p' /etc/fstab:显示非#开头的行;
                    ]# sed -n '/^[^#]/w /tmp/fstab.bak' /etc/fstab:把非#开头的行保存至/tmp/fstab.bak文件里;
                    ]# cat /tmp/fstab.bak:验证保存结果;
                r /PATH/TO/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面,实现文件合并;
                例如:
                    ]# sed '3r /etc/issue' /etc/fstab:把issue文件,写在fstab文件第3行的后面(文件合并);
                    ]# sed '/^UUID/r /etc/issue' /etc/fstab:把issue文件,写在fstab文件中以UUID开头的行后面;
                =:为模式匹配到的行打印行号;
                例如:
                    ]# sed '/^UUID/='  /etc/fstab:把UUID开头的行上面加一行号;
                !:条件取反;
                    地址定界!编辑命令;
                例如:
                    ]# sed '/^[^#]/d' /etc/fstab:删除非#开头的行;
                    ]# sed '/^#/!d' /etc/fstab:删除非#开头的行;
                    ]# ! sed '/^#/d' /etc/fstab:删除非#开头的行;
                s///:查找替换,其分隔符可自行指定,常用有s@@@、s###等;
                    替换标记:
                        g:全局替换;
                        w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
                        p:仅显示替换成功的行;
                        
                    ]# sed -i 's/7030/7035/' redis.conf 把此文件7030替换一次为7035;

 

原创文章,作者:斌斌,如若转载,请注明出处:http://www.178linux.com/124889

发表评论

登录后才能评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code