1、簡述rpm與yum命令的常見選項,并舉例
rpm 命令
linux的的包管理器,用于對rpm軟件包,進行安裝、升級、卸載、查詢、校驗等操作。
使用語法:
rpm [OPTIONS] [PACKAGE_FILE]
常用選項:
- 安裝: -i,–install
- 升級: -U,–update,-F,–freshen
- 卸載: -e,–erase
- 查詢: -q,–query
- 校驗: -V,–verify
- 數據庫維護: –builddb,–initdb
安裝:
rpm {-i|–install} [install-options] PACKAGE_FILE …
通用選項
- -v: verbose,詳細信息
- -vv: 更詳細的過程輸出
install-options:
- -h: 在展開包的時候輸出50個#號哈希標記符,[#表示2%的進度]
- –test: 測試檢查安裝,并報告依賴關系及沖突消息.
- –nodeps: 忽略依賴關系,并安裝
- –replacepkgs: 重新安裝
- –noscripts: 忽略RPM包的腳本執行
如果被操作修改的了安裝的配置文件,重新安裝并不會替代此文件,如果要恢復安裝需要刪除配置文件
升級:
rpm{-U|–upgrade}[install-options] PCKAGE_FILE… rpm{-F|–freshen}[install-options] PCKAGE_FILE…
- -U: 基于早期版本號升級或全新安裝,
- -F:僅作升級
獨有選項:
- –oldpackage:降級安裝,{回滾操作}
- –force:強制升級
卸載:
rpm {-e|–erase}[–allmatches][–nodeps][–noscripts][–test]PACKAGE_NAME…
卸載選項:
- –allmatches: 卸載所有匹配指定名稱的程序包個版本。
- –nodeps:忽略依賴關系,
- –test:測試卸載,dry run模式,
查詢:
rpm{-q|–query}[select-options][query-optons]
select-options:
- PACKAGE_NAME:查詢指定的程序包是否已經安裝及版本
- -q: 是查詢包選項。
- -a,–all:是查詢已經安裝的所有包。
- -f FILE: 查詢指定的文件是由哪些安裝包生成
- -g –group:查詢組中的包。
- -p –package PACKAGE_FILE: 用于實現對未安裝的程序包執行查詢操作.
- –whatprovides CAPABILITY: 查詢指定的CAPABILTY由哪個程序包提供。
- –whatrequires CAPABILITY: 查詢指定的CAPABILITY被哪個包所依賴:
query-optons:
- –changelog: 查詢rpm包的cheanglog
- -l: 程序安裝包的所有文件列表
- -i –info: 程序包相關的信息,版本號、大小、所屬的包租,等
- -c –configfiles: 查詢指定的程序提供的配置文件。
- -d –docfiles:查詢指定的程序包提供的幫助文檔。
- –provides:列出指定的程序包提供的所有的CAPABILITY.
- -R –requres: 查詢指定程序包的依賴關系。
- –scripts:查詢程序包自帶的腳本片段。
校驗:
rpm {-V|–verify}[select-options][verify-options]
常用選項:
- –nodeps:不校驗依賴關系。
- –nodigest:不檢查包完整性。
- –nofiles:不校文件屬性是否發生改變。
- –nosignature: 不校驗包完整性等等。
- …
特性說明:
- S:表示大小發生變化了。
- M:權限發生改變。
- 5:MD5碼發生改變,(完整性發生變化)。
- D:主/次設備號不匹配。
- L:readLink的路徑不匹配。
- U:屬主被修改。
- G:屬組被修改。
- T:最后一次修改時間戳,修改了。
- p:caPabilities 被修改。
數據庫重建:
rpm {–initdb | –rebuilddb}[–dbpath DIRECTORY][–root DIRECTORY]
常用選項:
- –initdb: 初始化數據庫,當前無任何數據庫可初始化創建一個新的,如果存在數據庫,不執行任何操作。
- –rebuilddb:重行構建,同故宮讀取當前系統上所有已經安裝過的程序包進行重新創建。
示例安裝:
[root@MiWiFi-R3-srv ~]# rpm -ivh /tmp/rpm/zsh-5.0.2-28.el7.x86_64.rpm
準備中... ################################# [100%]
軟件包 zsh-5.0.2-28.el7.x86_64 已經安裝
示例升級:
[root@MiWiFi-R3-srv ~]# rpm -Uvh --force /tmp/rpm/zsh-5.0.2-28.el7.x86_64.rpm
準備中... ################################# [100%]
正在升級/安裝...
1:zsh-5.0.2-28.el7 ################################# [100%]
示例卸載:
[root@MiWiFi-R3-srv ~]# rpm -evh zsh
準備中... ################################# [100%]
正在清理/刪除...
1:zsh-5.0.2-28.el7 ################################# [100%]
示例查詢:
[root@MiWiFi-R3-srv ~]# rpm -qa zsh
zsh-5.0.2-28.el7.x86_64
示例校驗:
首先修改其內容
[root@MiWiFi-R3-srv ~]# vim /usr/share/zsh/5.0.2/functions/ztodo
# vim: set ft=zsh et sw=2 sts=2:
# 測試#號
# 測試#號
# 測試#號
# 測試#號
emulate -L zsh
setopt no_sh_word_split null_glob no_ksh_arrays
typeset -gHA __ztodolist
typeset -gH __ztodolastwrite
local cachefile short_format list_format
local tmp needupdate=0
local -a todos
示例執行校驗
[root@MiWiFi-R3-srv ~]# rpm -V zsh
S.5....T. /usr/share/zsh/5.0.2/functions/ztodo
示例重建數據庫:
[root@MiWiFi-R3-srv ~]# rpm --rebuilddb
yum 命令
yum是屬于rpm的一種前端管理器,通過C\S協議,是一種能夠自動解決rpm包在安裝時需要調用復雜的運行環境。
語法:
yum [options] [command] [package …]
顯示所有倉庫:
yum repolist [all] [enabled|disabled] 啟用 | 禁用
顯示程序包:
list:
- 1、yum list [all|glob_exp1] [glob_exp2] […]
- 2、yum list {available|installed|updates} [glob_exp1] […]
安裝程序包:
install package1 [package2] […]
reinstall package1 [package2] […] (重新)
yum install gcc-4.5.4 [指明老版本,默認是安裝新版本]
升級程序包:
update [package1] [package2] […]
downgrade package1 [package2] […] (降級)
檢查可用升級:
check-update
卸載程序包:
remove | erase package1 [package2] […] 如果卸載被依賴的包也會被卸載。
查看程序包的information 查看程序包的簡要說明。
info […]
查看指定的特性:(可以是某文件)是由那個程序包提供的
provides | whatprovides feature1 [feature2] […]
清理本地緩存:
clean [packages | metadata | expire-cache | rpmdb | plugins | all]
構建緩存:
makecache
搜索:
search string1 [string2] […]
以指定關鍵字搜索程序包名及summary信息。
查看指定包所依賴的capabilities:
deplist package1 [package2] […]
查看yum事物歷史:
history [info | list | packages-list | packages-info | summary | addon-info | redo | undo |rollback |new | sync |stats]
安裝及升級本地程序包:
- localinstall rpmfile1 [rpmfile2] […]
- (maintained for legacy reasons only – use install)
- localupdate rpmfile1 [rpmfile2] […]
- (maintained for legacy reasons only – use update) 已經作廢,centos 7 可以直接使用 yum install 包名
包組管理的相關命令:
- groupinstall group1 [group2] […] 安裝指定包組
- groupupdate group1 [group2] […]升級包組
- grouplist [hidden] [groupwildcard] […] 顯示包組
- groupremove group1 [group2] […]移除包組
- groupinfo group1 […]查看包組的相關信息
- search string1 [string2] […]
示例顯示所有yum倉庫
[root@MiWiFi-R3-srv ~]# yum repolist
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源標識 源名稱 狀態
!base CentOS 7 Release 7.1.1503 8,652
!xen4CentOS Xen 4 CentOS 7 8,652
repolist: 17,304
示例查看所有可用的包
[root@MiWiFi-R3-srv ~]# yum list
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
已安裝的軟件包
GConf2.x86_64 3.2.6-8.el7 @anaconda
ModemManager.x86_64 1.1.0-6.git20130913.el7 @anaconda
ModemManager-glib.x86_64 1.1.0-6.git20130913.el7 @anaconda
示例安裝:
[root@MiWiFi-R3-srv ~]# yum install zziplib-utils.x86_64
已安裝:
zziplib-utils.x86_64 0:0.13.62-5.el7
作為依賴被安裝:
zziplib.x86_64 0:0.13.62-5.el7
完畢!
示例升級:
[root@MiWiFi-R3-srv cdrom]# yum update zziplib
示例卸載:
[root@MiWiFi-R3-srv cdrom]# yum remove zziplib
例刪除:
zziplib.x86_64 0:0.13.62-5.el7
作為依賴被刪除:
zziplib-utils.x86_64 0:0.13.62-5.el7
完畢!
示例查看程序包的特性:
[root@MiWiFi-R3-srv cdrom]# yum info zziplib
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
可安裝的軟件包
名稱 :zziplib
架構 :i686
版本 :0.13.62
發布 :5.el7
大小 :82 k
源 :base
簡介 : Lightweight library to easily extract data from zip files
網址 :http://zziplib.sourceforge.net/
協議 : LGPLv2+ or MPLv1.1
描述 : The zziplib library is intentionally lightweight, it offers the ability to
: easily extract data from files archived in a single zip file. Applications
: can bundle files into a single zip archive and access them. The implementation
: is based only on the (free) subset of compression with the zlib algorithm
: which is actually used by the zip/unzip tools.
示例查看指定特性
[root@MiWiFi-R3-srv cdrom]# yum provides zziplib
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
zziplib-0.13.62-5.el7.i686 : Lightweight library to easily extract data from zip files
源 :base
zziplib-0.13.62-5.el7.i686 : Lightweight library to easily extract data from zip files
源 :xen4CentOS
zziplib-0.13.62-5.el7.x86_64 : Lightweight library to easily extract data from zip files
源 :base
zziplib-0.13.62-5.el7.x86_64 : Lightweight library to easily extract data from zip files
源 :xen4CentOS
示例清理本地緩存
[root@MiWiFi-R3-srv cdrom]# yum clean
已加載插件:fastestmirror, langpacks
錯誤:清理命令需要參數:headers, packages, metadata, dbcache, plugins, expire-cache, rpmdb, all
[root@MiWiFi-R3-srv cdrom]# yum clean all
已加載插件:fastestmirror, langpacks
正在清理軟件源: base xen4CentOS
Cleaning up everything
Cleaning up list of fastest mirrors
示例構建緩存
[root@MiWiFi-R3-srv cdrom]# yum makecache
已加載插件:fastestmirror, langpacks
base | 3.6 kB 00:00:00
xen4CentOS | 2.9 kB 00:00:00
(1/7): base/group_gz | 154 kB 00:00:00
(2/7): base/primary_db | 5.1 MB 00:00:00
(3/7): base/filelists_db | 6.0 MB 00:00:00
(4/7): base/other_db | 2.2 MB 00:00:00
(5/7): xen4CentOS/primary_db | 5.1 MB 00:00:00
(6/7): xen4CentOS/filelists_db | 6.0 MB 00:00:00
(7/7): xen4CentOS/other_db | 2.2 MB 00:00:00
Determining fastest mirrors
元數據緩存已建立
[root@MiWiFi-R3-srv cdrom]#
示例搜索:
[root@MiWiFi-R3-srv cdrom]# yum search zz
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
============================================================ N/S matched: zz =============================================================
harfbuzz-devel.i686 : Development files for harfbuzz
harfbuzz-devel.x86_64 : Development files for harfbuzz
harfbuzz-icu.x86_64 : Harfbuzz ICU support library
harfbuzz-icu.i686 : Harfbuzz ICU support library
zziplib-devel.i686 : Development files for the zziplib library
zziplib-devel.x86_64 : Development files for the zziplib library
zziplib-utils.x86_64 : Utilities for the zziplib library
harfbuzz.x86_64 : Text shaping library
harfbuzz.i686 : Text shaping library
zziplib.i686 : Lightweight library to easily extract data from zip files
zziplib.x86_64 : Lightweight library to easily extract data from zip files
名稱和簡介匹配 only,使用“search all”試試。
2、自建yum倉庫,分別為網絡源和本地源
[local]
name=CentOS cdrom
baseurl=file:///tmp/cdrom/
gpgcheck=0
enabled=1
keepcache=0
[http]
name=mirrors 163
baseurl=http:///http://mirrors.163.com/centos/$7.4.1708/updates/$x86_64/
gpgcheck=
enabled=1
keepcache=0
3、簡述at和crontab命令,制定 每周三凌晨三、五點10分執行某個腳本,輸出當前時間,時間格式為 2017-12-28 10:00:00
linux任務計劃執行
- 特定時間執行一次: at
- 周期性循環執行 : crontab
at
特定時間執行一次腳本
語法格式:
at [OPTION]…TIME
常用選項:
- -l:查看作業隊列,相當于atq
- -f /PATH/FROM/SOMEFILE:從指定文件中讀取作業任務,而不用在交互式輸入。
- -d #:刪除指定的作業,相當于atrm #
- -c #:查看待執行作業的內容。
- -q QUEUE #:指明隊列。
TIME:模糊執行
- HH:MM [YYYY-mm-dd]
- noon 正午 ,
- midnight 午夜,
- teatime 喝茶時間
- tomorrow 明天
- now+# 重目前計數起
- UNIT:minutes,hours,days,OR weeks 相對時間
注意:作業執行結果是以郵件發送提交作業的用戶。
crontab
語法格式:
crontab [-u user] [-l|-r|-e][-i]
常用選項:
- -e:編輯任務,
- -l:列出所有當前用戶的任務。
- -r:移除所有任務,及刪除/varspool/cron/UASERNAME文件。
- -i:在使用-r選項移除所有任務時提升用戶避免出錯。
- -u user:root用戶可為指定用戶管理cron任務。
注意:運行結果以郵件通知給當前用戶,如何拒絕接收郵件。
- (1)COMMAND > /dev/null;正常結果發給 數據黑洞
- (2)COMMAND &> /dev/null;無論結果正確與否都發送給 數據黑洞 比較危險建議程序正常執行了一次后再加/dev/null
注意:定義COMMAND時,如果命令需要用到%,需要對其轉義,或加單引號‘’。
3、 每周三凌晨三、五點10分執行某個腳本,輸出當前時間,時間格式為 2017-12-28 10:00:00
1、首先新建一個文本用來記錄輸出內容.
[root@localhost ~]# touch /tmp/date.txt
2、設置一個周期性計劃.
[root@localhost ~]# crontab -e
10 5 * * 3 /bin/date '+\%F \%T' &>> /tmp/date.txt
0 3 * * 3 /bin/date '+\%F \T' $>> /tmp/date.txt
4、簡述sed常用操作命令,并舉例
sed 命令
sed與grep、awk被成為文本處理三劍客,其中sed是流編輯器,將文本中的數據進行逐行編輯處理,處理過程大體是至上而下讀取一行數據到模式空間(pattern space)與模式空間中的指定模式進行edit【編輯處理】由模式決定是否輸出至stdout(標準輸出)。
語法:
sed [OPTION]…’script’ [input-file]…
常用選項:
- -n:不輸出模式空間中的內容至屏幕。
- -r:支持使用正則表達式。
- -i:直接編輯源文件。
- -e scripts: 同時編輯多個文檔。
- -f /PATH/TO/SED_SCRIPT_FILE: 多個編輯命令組成的script腳本來編輯文件
地址定界:
- 空地址:對全文進行編輯
- 單地址:
- A :指定行 pattern:模式匹配的每一行。
- 地址范圍:
- A,B:A起始行至B結束行。
- A,+B:A指定起始行向后多少B行。
- A,/pate1/: 指定行A開始到模式匹配的第一個值之間的內容。
- 步進:~ 指定行向后多少位的行。
常用編輯命令
- d:刪除
- p:顯示模式空間被地址定界指定的內容。
- a \text: 將‘text’追加到行尾,支持\n
- i \text: 將‘text’插入行首,支持\n
- c \text: 把匹配道德行替換為‘text’文本
- w /PATH/TO/SOMEFILE: 保存模式空間匹配到的行至指定文本中,
- r /PATH/FROM/SOMELILE: 讀取指定文件插入到模式空間匹配的行后面,實現文件合并。
- =:為模式匹配到的打印(顯示)行號
- ?。簵l件取反。
- \定制定界!編輯命令
- s///: 查找替換,其分隔符可指定指定,常用的有s@@@,s###等等。
- 替換標記:
- g:全局替換,替換行的首次匹配。
- p:顯示替換成功的行。
- 替換標記:
- w /PATH/TO/SOMELIFE:將替換成功的結果保存到指定文件中,
支持的正則表達式
- 字符匹配:
- .號:匹配任意單個字符。
- []:匹配指定范圍內的任意單個字符。
- [^]:匹配指定范圍外的任意單個字符。
- [[:upper:]];匹配大寫字母
- [[:lower:]];所有小寫字母
- [[:alpha:]]: 所有字母
- [[:digit:]]: 所有數字
- [[:alnum:]]: 所有的字幕和字符
- [[:space:]]: 所有空白字符
- [[:punct:]]: 所有標點符號
- 匹配次數:用在要指定其出現的次數的字符的后面,用于現在其前面字符出現的次數。默認工作于貪婪模式,能匹配多長就多長
- *:匹配其前面的字符任意次,0,1或者多次。
- .*:匹配任意長度的任意字符。
- \?:匹配其前面的字符0次或1次,即前面的字符是可有可無的。
- +:匹配前面的字符1次或多次,即其前面的字符要出現至少1次。
- {m}:匹配其前面的字幕m次,
- {m,n}:匹配其前面的字符至少m次,至少n次
位置錨定:
- ^:行首錨定,用戶模式的最左側。
- $:行尾錨定,用于模式的最右側
- \<或\b:詞首錨定,用于單詞模式的左側。
- >或\b:詞尾錨定,用戶單詞模式的右側
- \<pattern\>:精確錨定單詞。</pattern\>
示例:只顯示/etc/rpc的前4行
[root@MiWiFi-R3-srv ~]# sed -n '1,4'\p /etc/rpc
#ident "@(#)rpc 1.11 95/07/14 SMI" /* SVr4.0 1.2 */
#
# rpc
#
[root@MiWiFi-R3-srv ~]#
示例: 將yum.conf 的3-5行插入 “hello”
[root@localhost sed]# sed '3,+2 a\hello' yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
hello
debuglevel=2
hello
logfile=/var/log/yum.log
hello
exactarch=1
示例:查詢空白行
[root@localhost sed]# sed -r -n '/^$/p' yum.conf
[root@localhost sed]#
[root@localhost sed]# sed ‘s@[[:space:]]+@—-@’g yum.conf
[main]
That`s—-the—-line “`
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90076
總結的很全,另外在適當的地方舉出一二例子,容易帶動讀者再次回想前面的理論部分,排版也不錯,繼續加油~