第五周作業

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倉庫,分別為網絡源和本地源

配置本地源

    建立本地源目錄
    [[email protected] ~]#mkdir /mnt/cdrom
    [[email protected] ~]#mkdir /yum

    掛載Centos光盤
    [[email protected] ~]#mount /dev/cdrom /mnt/cdrom
    [[email protected] ~]#cp -r /mnt/cdrom/* /yum

    備份repo
    [[email protected] ~]#cd /etc/yum.repo.d/
    [[email protected] ~]#mkdir backup
    [[email protected] ~]#mv CentOS-Base.repo CentOS-CR.repo CentOS-Vault.repo CentOS-Vault.repo ./backup
    編輯Centos-Media.repo
    [[email protected] ~]#vim Centos-Media.repo

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

    清除yum緩存
    [[email protected] ~]#yum clean all

配置網絡源

    備份源鏡像文件
    [[email protected] yum.repos.d]# mv centos* ./backup

    下載阿里云的鏡像到/etc/yum.repos.d/
    [[email protected] yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo
    http://mirrors.aliyun.com/repo/Centos-7.repo

    清除yum緩存
    [[email protected] yum.repos.d]# yum clean all
    [[email protected] 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 '[email protected]^#[[: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///:查找替換,其分隔符可自行指定,常用有[email protected]@@、s###等;
                    替換標記:
                        g:全局替換;
                        w /PATH/TO/SOMEFILE:將替換成功的結果保存至指定文件中;
                        p:僅顯示替換成功的行;
                        
                    ]# sed -i 's/7030/7035/' redis.conf 把此文件7030替換一次為7035;

 

原創文章,作者:斌斌,如若轉載,請注明出處:http://www.npownk.tw/124889

聯系我們

400-080-6560

在線咨詢

工作時間:周一至周五,9:30-18:30,節假日同時也值班

QR code
安徽十一选五分布走势