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/)