第一部分 linux程序包管理
rpm簡介
RPM是RPM Package Manager(RPM軟件包管理器)的縮寫,這一文件格式名稱雖然打上了RedHat的標志,但是其原始設計理念是開放的,現在包括OpenLinux、SUSE等發行版都有采用,可以算是公認的行業標準了。RPM是一種用于互聯網下載包的打包及安裝工具,它包含在某些Linux發行版中。它生成具有.RPM擴展名的文件。
CentOS系統上rpm程序主要有以下幾個功能:
(1)安裝:
rpm {-i|–install} [install-options] PACKAGE_FILE
-v:verbose
-vv:顯示更詳細的安裝信息
-h:以“#”顯示程序包管理執行進度,每個“#”表示2%的進度
rpm -ivh PACKAGE_FILE
–test:測試安裝,但不真正執行安裝過程,屬于dry run模式
–nodeps:忽略依賴關系
–replacepkgs:重新安裝
–nosignature:不檢查來源合法性
–nodigest:不檢查包完整性
–noscipts:不執行程序包腳本片段
%pre:安裝前腳本:–nopre
%post:安裝后腳本:–nopost
%preun:卸載前腳本:–nopreun
%postun:卸載后腳本:–nopostun
(2)升級:
rpm {-U|–upgrade} [install-options] PACKAGE_FILE
rpm {-F|–freshen} [install-options] PACKAGE_FILE
upgrade:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則“安裝”
freshen:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則不執行升級操作
rpm -Uvh PACKAGE_FILE
rpm -Fvh PACKAGE_FILE
–oldpackage:降級
–force:強行升級
(3)查詢:
rpm {-q|–query} [select-options] [query-options]
[select-options]
-q:查詢包
-a:所有包
-f:查看指定的文件由哪個程序包安裝生成
-p /PATH/TO/PACKAGE_FILE:針對尚未安裝的程序包文件查詢其安裝文件信息
–whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供
–whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴
[query-options]
–changelog:查詢rpm包的更新日志
-c:查詢程序的配置文件
-d:查詢程序的文檔
-i:information
-L:列出許可證信息
-l:查看指定的程序包安裝后生成的所有文件
–scripts:程序包自帶的腳本片段
-R:查詢指定的程序包所依賴的CAPABILITY
–provides:列出指定程序包所提供的CAPABILITY
(4)卸載:
rpm {e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME
–allmatches:卸載所有匹配指定名稱的程序包的各版本;
–nodeps:忽略依賴關系
–test:測試卸載,dry run模式
(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 {–initdb|–rebuilddb}
initdb:初始化,如果事先不存在數據庫,則新建之;否則,不執行任何操作
rebuilddb:重建,無論當前存在與否,直接重新創建數據庫
yum工具簡介
yum是rpm軟件包管理器的前端管理工具。yum是一個在Fedora和RedHat以及CentOS的前端軟件包管理器?;趓pm包管理,能夠從指定的服務器自動下載rpm包并且安裝,可以自動處理依賴性關系,簡化了安裝步驟。
功能用法:yum [options] [command] [package]
顯示倉庫列表:
repolist [all|enabled|disabled]
顯示程序包:
list
#yum list [all | glob_exp1] [glob_exp2]
#yum list {available|installed|updates} [glob_exp1]
安裝程序包:
install package1 [package2]
reinstall package1 [package2](重新安裝)
升級程序包:
update [package1] [package2]
downgrade package1 [package2](降級)
檢查可用升級:
check-update
卸載程序包:
remove | erase package1 [package2]
查看程序包的簡要信息:(類似于rpm -qi)
info package
查看指定的特性(可以是某文件)是由哪個程序包所提供:
provides | whatprovides feature1 [feature2]
清理本地緩存:
clean [ package | 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)
包組管理的相關命令:
groupinstall group1 [group2](安裝包組)
groupupdate group1 [group2](升級包組)
grouplist [hidden] [groupwildcard](列出包組的列表)
groupremove group1 [group2](移除包組)
groupinfo group1(查看包組的相關信息)
yum倉庫
yum倉庫定義:
[repositoryID] 倉庫ID
name=Some name for this repository? 倉庫名,功能的完整描述
baseurl=url://path/to/repository/? 倉庫的路徑
文件服務器:四種形式
ftp://
http://
nfs://
file:///
enabled={1|0} 是否啟用,默認啟用
gpgcheck={1|0}? 檢查包的來源合法性和完整性。默認啟用
gpgkey=URL? 指明秘鑰文件路徑
enablegroups={1|0} 是否允許基于組管理程序包,默認啟用
failovermethod={roundrobin|priority}? 故障轉移方法,baseurl有多個時的選用原則
默認為:roundrobin,意為隨機挑選;
cost=? 開銷值,默認為1000
建立yum倉庫步驟:
要建立yum倉庫,首先需要在/etc/yum.repo.d/目錄下建立一個已.repo結尾的文件,如下圖的CenOS-local.repo的yum倉庫文件:
第二部分 at和crontab簡介
????????at:未來某個時間點執行一次某任務,所制定的計劃任務會在指定時間執行一次,結果會以郵件的形式發送給創建計劃的用戶。
用途用法:
at [OPTION]… TIME
TIME:
HH:MM [YYYY-mm-dd]
noon中午12點,midnight午夜12點, teatime下午4點
today,tommorow
now+#? 相對時間計時法? ?UNIT :minutes, hours, days, weeks
常用選項:
-l:查看作業隊列,相當于atq;
-f /PATH/FROM/SOMEFILE:從指定文件中讀取作業任務
-d:刪除指定的作業,相當于atrm;
#at -d #(作業號)
-c:查看指定作業的具體內容;上部分是環境信息,尾部是提交的作業內容。
-q QUEUE:指明隊列;
crontab是用來進行周期性的執行某任務
向crond提交作業的方式不同于at,它需要使用專用的配置文件,此文件有固定格式,不建議使用文本編輯器直接編輯此文件;要使用crontab命令。該命令是用法如下:
crontab [-u user] [-l | -r | -e] [-i] 立即生效
-e:編輯任務;
-l:列出所有任務;
-r:移除所有任務;
-i:在使用-r選項移除所有任務時提示用戶確認;
-u user:root用戶可為指定用戶管理cron任務;
注意:運行結果以郵件通知給當前用戶;如果拒絕接收郵件:
(1) COMMAND > /dev/null
(2) COMMAND &> /dev/null
第三部分 sed命令簡介
Sed本質上是一個編輯器,但是它是非交互式的,同時它又是面向字符流的,輸入的字符流經過Sed的處理后輸出。Sed本身是一個管道命令,可以分析標準輸入,主要用來分析關鍵字的使用、統計等,此外還可以將數據進行替換、刪除、選取特定行等功能。
用法用例如下:
sed [OPTION]… ‘script’ [input-file] …
常用選項:
-n:不輸出模式空間中的內容至屏幕;
-e script, –expression=script:多點編輯;
-f? /PATH/TO/SED_SCRIPT_FILE
-r, –regexp-extended:支持使用擴展正則表達式;
-i[SUFFIX], –in-place[=SUFFIX]:直接編輯原文件 ;
編輯命令:
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:顯示替換成功的行;
示例:
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/103648
很棒的文章,內容清晰,實操部分遇到的問題也給出了詳細的解決方法,很不錯,繼續加油。