rpm與yum,at與crontab,sed命令使用

Mr_Walker發表於2018-05-08

1、簡述rpm與yum命令的常見選項,並舉例。

  • rpm——軟體包管理系統,它使得在Linux下安裝、升級、刪除軟體包的工作變得容易,並且具有查詢、驗證軟體包的功能。

1)安裝選項

命令格式:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
    常用—>rpm -ivh PACKAGE_FILE... 進行軟體的安裝
詳細選項: -v:顯示詳細資訊 -vv:顯示更詳細的資訊 -h:安裝時輸出hash記號(#)顯示進度 --test:測試安裝(實際不安裝),檢查並報告依賴關係及衝突訊息等 --nodeps:忽略依賴關係(不建議使用) --replacepkgs:重新安裝 --nosignature:不檢查包簽名資訊,不檢查來源合法性 --nodigest:不檢查包完整性資訊

2)升級

命令格式:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
  常用—>rpm -Uvh PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
  常用—>rpm -Fvh PACKAGE_FILE ...

詳細選項:
-U:有舊版本程式則升級,不存在舊版本則安裝;
-F:有舊版本程式則升級,不存在舊版本的話不安裝
--oldpackage:降級
--force:強行升級

注意:
1)不要對核心進行升級操作:Linux支援多核心版本並存,因此直接安裝新版本核心即可;
2)如果某原程式的配置檔案安裝後曾被修改過,升級時,新版本程式提供的同一個配置檔案
不會覆蓋原有版本的配置檔案,而是把新版本的配置檔案重新命名(FILENAME.rpmnew)後提供。

3)查詢

命令格式:
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] 選項: -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,-qpl PACKAGE,-qpc PACKAGE,...

4)解除安裝

命令格式:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...

詳細選項:
--allmatches:解除安裝所有匹配指定名稱的程式包;
--nodeps:忽略依賴關係;
--test:測試解除安裝

5)校驗已安裝的軟體包

命令格式:
rpm {-V|--verify} [select-options] [verify-options]

詳細選項:
-p:校驗包檔案;
-f:校驗所屬的程式包;
-a:校驗所有的程式包;
-g:校驗所有屬於組的程式包
  • yum——用於新增、刪除、更新rpm包,自動解決包的依賴問題及系統更新升級
命令格式:
yum [options] [command] [package ...]

[options] 選項:
-h:顯示幫助資訊;
-y:對所有的提問都回答“yes”;
-c:指定配置檔案;
-q:安靜模式;
-v:詳細引數;
-d:設定除錯等級(0-10);
-e:設定錯誤等級(0-10);
-R:設定yum處理一個命令的最大等待時間;
--nogpgcheck:禁止進行gpg check;
--disablerepo=repoidglob:臨時禁用此處指定的repo;
--enablerepo=repoidglob:臨時啟用此處指定的repo;
--noplugins:禁用所有外掛 [command] 選項:
install:安裝程式包;
reinstall:重新安裝程式包;
update:升級程式包;
downgrade:給程式包降版本;
check-update:檢查可用升級;
remove|erase:解除安裝程式包;
list:顯示程式包;
info:檢視程式包資訊;
clean:清理本地快取;
search STRING[STRING...]:以指定關鍵字“STRING...”搜尋程式包名及summary資訊;
deplist:檢視指定包所依賴的capabilities;
command命令中的包管理—>groupinstall,groupupdate,grouplist,groupremove,groupinfo

2、自建yum倉庫,分別為網路源和本地源

1)網路源的yum倉庫

vim /etc/yum.repos.d/CentOS7-Aliyum.repo
    [C7-aliyum]
    name=CentOS7-aliyum
    baseurl=https://mirrors.aliyun.com/centos/7.4.1708/updates/x86_64/Packages/
    enalbed=1

2)本地源的yum倉庫

掛載本地 ISO映象
    mount -o loop /data/CentOS7.iso /media
編輯 /etc/fstab 檔案,使得 ISO映象檔案開機自動掛載
  vim /etc/fstab
    /data/CentOS7.iso  /media  iso9660  defaults  0 0 編輯 本地yum倉庫 vim /etc/yum.repos.d/CentOS-Media.repo [C7-media] name=CentOS7-Media baseurl=file:///media gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rmp-gpg/RPM-GPG-KEY-CentOS-7

3、簡述at和crontab命令,制定 每週三凌晨三、五點10分執行某個指令碼,輸出當前時間,時間格式為 2017-12-28 10:00:00

1)at——定時執行任務(沒有重複性)

命令格式:
    at  [OPTION]... TIME (作業執行結果是以郵件傳送給提交作業的使用者)
    at> 執行的命令
    退出at命令 ctrl+d
詳解: TIME:   HH:MM [YYYY-mm-dd]   noon,midnight,teatime,tomorrow   now+ #UNIT(minutes, hours, days, OR weeks) OPTION:   -l:檢視作業佇列,相當於atq   -f /PATH/FROM/SOMEFILE:從指定檔案中讀取作業任務,而不用再互動式輸入;   -d:刪除指定的作業,相當於atrm;   -c:檢視指定作業的具體內容;   -q QUEUE:指明佇列
注意:   at命令使用的前提,需要開啟atd程式,需要確保atd處於執行狀態。   可通過 ps -ef | grep atd 檢視是否已開啟 atd。
示例:   [root@bogon data]# at 21:00   at> cp /var/log/secure /data/secure.bak   at>
<EOT> (按 ctrl+d 退出 at)   job 6 at Tue Apr 10 21:00:00 2018   [root@bogon data]# at -l (檢視任務)   6 Tue Apr 10 21:00:00 2018 a root   [root@bogon data]# at 21:00 2018-05-04 -q b (-q b,指明佇列,預設是a佇列)   at> tar -zcf /data/etc.backup.tat.gz /etc   at> <EOT>   job 8 at Fri May 4 21:00:00 2018   [root@bogon data]# at -l -q b (查詢時也可指明佇列)   8 Fri May 4 21:00:00 2018 b root

2)crontab——任務計劃(定時,重複執行)

cron任務,由 cronie 程式包提供,執行的前提需要確保 crond 程式處於執行狀態。可通過如下方式確認狀態:
    CentOS7:system status crond.service
    CentOS5,6,7:service crond status

系統cron任務:
  主要用於實現系統自身的維護,手動編輯檔案即可。
    vim /etc/crontab

使用者cron任務:
命令格式: crontab [-u user] [-l | -r | -e] [-i]
  (成功編輯任務後,會產生 /var/spool/cron/USERNAME 的檔案,記錄任務詳情,USERNAME 表示當前使用者)
選項: -e:編輯任務( 進入vi編輯器 ); -l:列出所有任務; -r:移除所有任務,即刪除/var/spool/cron/USERNAME檔案; -i:在使用-r選項移除所有任務時提示使用者確認; -u user:root使用者可為指定使用者管理cron任務
注意: 1) 執行結果將以郵件通知給當前使用者,如果不想接收郵件,可在定義任務時將結果輸出到 /dev/null 中,如 COMMAND > /dev/null 或者 COMMAND &> /dev/null; 2) 如因關機導致任務不能執行,下次開機也不會執行。如果期望某時間因故未能按時執行,下次開機後無論是否到了相應時間點都要執行一次,可使用 anacron 實現。
詳解:   # .---------------- minute (0 - 59)   # | .------------- hour (0 - 23)   # | | .---------- day of month (1 - 31)   # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...   # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  # | | | | |
  # * * * * * command to be executed
示例: [root@bogon data]# crontab -e (編輯定時任務) [root@bogon data]# crontab -l * * * * 3,7 /bin/tar -zcf /data/etc.bak.tar.gz /etc (每週三跟週日備份 /etc 目錄)

4、簡述sed常用操作命令,並舉例

  sed,文字編輯器,一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為“模式空間”(pattern space);接著sed 會處理緩衝區中的內容,
處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。   需要注意兩點:1) sed不會改變原檔案內容;2) 不被模式匹配的內容預設都會輸出到螢幕。

  命令格式:   sed [OPTION] ... `script` [input-file] ...   OPTION: -n:不輸出模式空間中的內容至螢幕; -e script, --expression=script:多點編輯; -f /PATH/TO/SED_SCRIPT_FILE:讀取script檔案(每行一個編輯命令); -r, --regexp-extended:支援使用擴充套件正規表示式; -i[SUFFIX], --in-place[=SUFFIX]:直接編輯原檔案   script(地址定界編輯命令):     1) 地址定界:       (1) 空地址:對全文進行處理       (2) 單地址(#表示具體數字,pattern表示正規表示式):           #:指定行;           /pattern/:被此模式所匹配到的每一行       (3) 地址範圍:           #,#:第 #行到第#行           #,+#:第 #行開始,往後再加 #行           #,/pattern/:第 #行到第一次被模式匹配之間的行           /pattern1/,/patern2/:第一次被pattern1匹配到第一次被pattern2匹配之間的行           $:最後一行       (4) 步長:~
          示例,1~2:奇數行;2~2:偶數行。     2) 編輯命令:         d:刪除;           示例,sed `1,5d` /etc/fstab (刪除/etc/fstab中第1行到第5行)         p:顯示模式空間中的內容;
        n:讀取下一行
          示例,sed -n `p;n` /etc/fstab (讀取奇數行);sed -n `n;p` /etc/fstab (讀取偶數行)         a ext:在行下方追加文字“text”,支援使用 實現多行追加;         i ext:在行上方插入文字“text”,支援使用 實現多行插入;           示例,sed `3i ew line another new line` /etc/fstab (在第3行上方寫入一行new line和一行another new line)         c ext:把匹配到的行替換為此處指定的文字“text”(替換一整行);           示例,sed `/^UUID/c # add device` /etc/fstab (UUID開頭的行替換成 # add device)         w /PATH/TO/SOMEFILE:儲存模式空間匹配到的行至指定的檔案中;           示例,sed `/^[^#]/w /tmp/fstab.bak` /etc/fstab (非#開頭的內容儲存至檔案/tmp/fstab.bak)         r /PATH/FROM/SOMEFILE:讀取指定檔案的內容至當前檔案被模式匹配到的行後面,常用於實現檔案合併;           示例,sed `3r /etc/issue` /etc/fstab (在/etc/fstab文字第3行後插入/etc/issue內容)         =:為模式匹配到的行列印行號;           示例,sed `/^UUID/=` /etc/fstab (在UUID開頭的行上方新增行號)         !:條件取反;           示例,sed `/^#/!d` /etc/fstab (保留#開頭的行)         s///:查詢替換 (其分隔符/可自行指定,形如s@@@, s###)           替換標記:               g:全域性替換;               w /PATH/TO/SOMEFILE:將替換成功的結果儲存至指定檔案中;               p:顯示替換成功的行               示例,sed -n `s/4/@/gp` /etc/fstab (把檔案中所有的4都替換成@,此處如果不加g則替換每行中出現的第一個4)
                 sed -n `/^UUID/s#4#@#p` /etc/fstab (把檔案中以UUID開頭的行中第一個4替換成@)
                 sed `s@^[[:space:]]+@@` /etc/grub2.cfg (刪除/etc/grub2.cfg中已空白字元開頭的所有空白字元)                  echo "/var/log/message" | sed -r `s@[^/]+/?$@@` (取出 /var/log/)

相關文章