rpm、yum、週期性計劃、sed

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章