Q1雕欺、每12小時備份并壓縮/etc/目錄至/backup目錄中路翻,保存文件名稱格式為邢羔,"etc-年-月-日-時-分.tar.gz"
在crontab -e中:* */12 * * * tar czf /back/etc-date +"%F-%H-%M"
.tar.gz /etc
Q2、rpm包管理功能總結以及實例應用演示
RPM宾巍,原名Red-hat Package Manager稽坤,成為行業(yè)標準后改名為RPM Package Manager丈甸。
RPM包的命名格式為:{package}-{version}-{release}.{arch}.rpm。
比較大的包可以分成主包和多個子包尿褪,主包包含主要功能睦擂,子包包含擴展功能。主包命名格式:{masterpackage}-{version}-{release}.{arch}.rpm杖玲,子包命名格式:{masterpackage}-{subpackage}-{version}-{release}.{arch}.rpm顿仇。
CentOS系統(tǒng)上rpm命令管理程序包:
安裝、升級天揖、卸載夺欲、查詢和校驗、數(shù)據(jù)庫維護
rpm命令:rpm【OPTIONS】【Package FIle】
安裝:-i今膊,--install
升級:-U些阅,--update,-F斑唬,--freshen
卸載:-e市埋,--erase
查詢:-q,--query
校驗:-V恕刘,--verify
數(shù)據(jù)庫維護:--builddb缤谎,--initdb
1、rmp安裝:
rpm{-i|--install}[install-options]PACKAGE_FILE….
安裝rpm命令:rpm -ivh Package_FILE
General Options:
-v:verbose 詳細信息
-vv:更詳細的信息
[install-options]:
-h:hash marks輸出進度條褐着,每個#表示2%的進度
--test:測試安裝坷澡,檢查并報告依賴關系和沖突消息等
--nodeps:忽略依賴關系,不建議
--replacepkgs:重新安裝
備注:rpm可以自帶腳本含蓉,
四類:
preinstall:安裝過程開始之前運行的腳本频敛,%pre
Postinstall:安裝過程完成之后運行的腳本项郊,%post
preuninstall:卸載過程真正開始執(zhí)行之前運行的腳本,%prun
postuninstall:卸載過程完成之后運行的腳本
--nosignature:不檢查包簽名信息斟赚,不檢查來源合法性
--nodigest:不檢查包完整性信息
2着降、rpm 升級:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-U:升級或安裝
-F:升級
rpm -Uvh Package_FILE……
rpm -Fvh Package_FILE……
--oldpackage:降級
--force:強制升級;
注意:
(1)不要對內核做升級操作拗军,linux支持多內核版本并存任洞,因此,直接安裝新版本內核
(2)如果某原程序包的配置文件安裝后曾被修改過发侵,升級時交掏,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(filename.rpmnew)后提供器紧;
3耀销、rpm 卸載:
rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
--allmatches:卸載所有匹配指定名稱的程序包的各版本
--nodeps:忽略依賴關系
--test:測試卸載楼眷,dry run 模式
4铲汪、rpm 查詢:
rpm {-q|--query} [select-options] [query-options]
【select-options】
PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本
-a罐柳,-all掌腰;查詢所有已經安裝過的包;
-f FILE:查詢指定的文件由那個程序包安裝生成张吉;
-p齿梁,--package PACKAGE_FILE:用于實現(xiàn)對未安裝的程序包執(zhí)行查詢操作
--whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供
--whatrequires CAPABILITY:查詢指定的CAPABILTY被哪個包所依賴
【query-options】
--changelog:查詢rpm包的changlog;
-l肮蛹,--list:程序安裝生成的所有文件列表勺择;
-i,--info:程序包相關的信息伦忠,版本號省核,大小,所屬的包組
-c昆码,--configuretion:查詢指定的程序提供的配置文件
-d气忠,--docfiles:查詢指定的程序包提供的文檔
-provides:列出指定的程序包提供的所有的CAPABILITY
-R,--requires:查詢指定的程序包的依賴關系
--scipts:查看程序包自帶的腳本片段
用法:
-qi PACKAGE赋咽,-qf FILE旧噪,-qc PACKAGE,
-ql PACKAGE脓匿,-qd PACKAGE
5淘钟、rpm校驗:
rpm {-V|--verify} [select-options] [verify-options]
6、驗證包來源合法性和完整性:
來源合法性:
數(shù)字簽名
完整性驗證
獲取并導入信任的包制作者的密鑰陪毡;
對于centos發(fā)行版來說米母,rpm-import /etc/pki/rpm-gpg/PM-GPG-KEY-CentOS-7
驗證:
(1)安裝此組織簽名的程序時袱瓮,會自動執(zhí)行驗證
(2)手動驗證:rpm -K PACKAGE_FILE
7、數(shù)據(jù)庫重建:
Rpm 管理器數(shù)據(jù)庫路徑:/var/lib/rpm
查詢操作:通過此處的數(shù)據(jù)庫進行爱咬;
Rpm {--initdb|--rebuilddb}
Initdb:初始化
如果事先不存在數(shù)據(jù)庫尺借,則新建之,否則精拟,不執(zhí)行任何操作
rebuilddb:重建
無論當前存在與否燎斩,直接重新創(chuàng)建數(shù)據(jù)庫
Q3、yum的配置和使用總結以及yum私有倉庫的創(chuàng)建蜂绎。
yum用法:yum [options] [command] [package ...]
yum子命令:
install:安裝指定的(多個)包或包組栅表。
update:更新。如果不指定任何包师枣,會升級所有已經安裝的包怪瓶。
update-to:類似update命令,但是升級到指定的版本践美。
update-minimal:類似update命令洗贰,但只升級到比當前版本高的最低版本。
check-update:檢查是否有更新陨倡。命令狀態(tài)碼返回100表明有更新敛滋,0沒有更新,1表示出錯兴革。
upgrade:同update --obsoletes绎晃,會刪除被淘汰的包杂曲。
upgrade-to:類似upgrade庶艾,但只升級到指定版本。
remove/erase:卸載指定包及依賴此包的其他包擎勘。有一些配置可以想必卸載的行為咱揍。
remove_leaf_only:只卸載不被依賴的包。
clean_requirements_on_remove:卸載的同時货抄,卸載只依賴此包的其他包述召。
autoremove:清除非顯式安裝的,不再被其他包依賴的包蟹地。
list OPTIONS:列出指定類型的包积暖。
all:所有,默認怪与。
available:倉庫中有夺刑,可以安裝。
updates:可以升級。
installed:已經安裝遍愿。
extras:已安裝存淫,但倉庫中沒有。
obsoletes:已經安裝且被淘汰的沼填。
recent:最近添加到倉庫中的桅咆。
provides/whatprovides:查詢指定的文件或特性是由哪個包生成的。
search:根據(jù)包名和描述查找相關的包坞笙。
info:查看指定包的描述信息岩饼,可用的opion同list命令。
clean:清除yum緩存目錄下的文件薛夜。
expire-cache:過期的元數(shù)據(jù)和鏡像列表籍茧。
packages:rpm包。
headers:頭文件梯澜。
metadata:元數(shù)據(jù)文件寞冯。
dbcache:本地元數(shù)據(jù)庫。
rpmdb:rpm緩存晚伙。
plugins:擴展插件緩存吮龄。
all:以上所有。
makecache:構建元數(shù)據(jù)的緩存撬腾。
localinstall:安裝指定的本地rpm文件包螟蝙,自動解決依賴問題恢恼。
localupdate:用指定的rpm文件包升級民傻,自動解決依賴問題。
reinstall:重新安裝场斑。
downgrade:降級漓踢。
swap foo bar:卸載foo,安裝bar漏隐。
deplist:顯示包的依賴喧半,和提供這些依賴的包。
repolist:列出倉庫信息青责。
enabled:列出啟用的倉庫挺据,默認。
disabled:列出禁用的倉庫脖隶。
all:列出所有倉庫扁耐。
history:列出歷史事務。
groupinstall:安裝指定組产阱。
groupupdate:更新指定組婉称。
grouplist:查看所有組。
groupremove:卸載組。
groupninfo:查看組信息王暗。
yum選項:
-y:對所有互動回答為yes悔据。
-c:指定yum配置文件位置。
-q:靜默模式俗壹。
-v:顯示調試信息科汗。
--disablerepo:臨時禁用repo。
--enablerepo:臨時啟用repo绷雏。
--nogpgcheck:不檢查來源合法性肛捍。
創(chuàng)建yum倉庫:createrepo [options] DIRECTORY
-u URL:指定baseurl,訪問倉庫的url之众。
--basedir:指向rpm文件目錄的路徑拙毫,默認是當前目錄
-x:排除的文件,可用glob指定棺禾。
倉庫元數(shù)據(jù):在倉庫的repodate目錄中
primary.xml.gz:指明了倉庫中所有rpm包缀蹄,依賴關系,每個包安裝后會生成的文件膘婶。
filelists.xml.gz:當前倉庫中所有rpm包的所有文件列表缺前。
other.xml.gz:額外信息,比如修改日志悬襟。
repomd.xml:上述三個文件的時間戳和檢驗和衅码。
comps.xml:分組信息。
yum相關配置
配置文件:/etc/yum.conf脊岳,為所有倉庫提供公共配置逝段。
特性配置文件:/etc/yum.repos.d/.repo,為指定的倉庫提供配置割捅。
配置文件中的變量:
arch:CPU平臺體系
YUM0-$YUM9:自定義變量。
配置文件格式:
[repoid] # 倉庫的唯一標識
name=NAME # 倉庫的名稱
baseurl=URL # 訪問倉庫的路徑亿驾,可用ftp://嘹黔、http://、file:/// 協(xié)議指定莫瞬,可指定多個儡蔓,一行一個
mirrorlist=URL # 指向一個包含多個baseurl的文件的url
enabled=[1|0] # 啟用/禁用倉庫
gpgcheck=[1|0] # 是/否驗證文件來源的合法性。
gpgkey=URL # 指向gpg key文件的url
enabledgroups=[1|0] # 是否支持組
failovermethod=[roundrobin|priority] # 訪問baseurl失敗時疼邀,查找下一個baseurl的策略喂江,roundrobin:隨機選擇,priority:順序選擇下一個檩小。
keepalive=[1|0] # 使用HTTP/1.1時开呐,是否支持keepalive
cost=num # 倉庫開銷,用來衡量倉庫的性能,默認1000筐付,越小說明性能越好卵惦。
Q4、寫一個腳本實現(xiàn)列出以下菜單給用戶:
(1)disk:show disk info信息
(2)mem: show memory info信息
(3)cpu: show cpu info信息
(*)quit
!/bin/bash
cat << EOF
disk) show disks info
mem) show memory info
cpu) show cpu info
*) QUIT
EOF
read -p "your choice:" option
if [ "option" == 'mem' ];then
free -m
elif [ "$option" == 'cpu' ];then
lscpu
else
echo "Unkown option"
exit 3
fi
Q5瓦戚、sed用法總結并結合實例演示
sed [OPTION]... {script-only-if-no-other-script} [input-file]…
script:
地址定界編輯命令沮尿;
常用選項:
-n:不輸出模式空間中的內容至屏幕
-e script, --expression=script:多點編輯
-f /path/to/sed_script_file
每行一個編輯命令:
-r, --regexp-extended:支持使用擴展正則表達式;
-i:SUFFIX], --in-place[=SUFFIX]: 直接編輯源文件
地址定界:
(1)空地址:表示對全文進行處理较解;
(2)單地址:
#:指定行畜疾;
/pattern/:被此模式所匹配到的每一行;
(3)地址范圍:
#印衔,#:
#啡捶,+#:
#,/pat1/
/pat1/,/pat2/
$:表示最后一行奸焙;
(4)步進:~
1~2::所有奇數(shù)行
2~2:所有偶數(shù)行
編輯命令:
d:刪除
]# sed -n '1,5d' fstab
-n 不輸出
顯示偶數(shù)行:
]# sed '1~2d' fstab
-p:顯示模式空間中的內容
]# sed -n '1~2p' fstab
顯示奇數(shù)行
a \test:在行后面追加文本“text”瞎暑,支持使用\n實現(xiàn)多行追加
i \text:在行前面插入文本“text”,支持使用\n實現(xiàn)多行插入
c \text:把匹配到的行替換為此處指定的文本“text”
w /path/to/somefile:保存模式空間匹配到的行至指定的文件中
-r /path/from/somefile:讀取指定文件的內容至當前文件被模式匹配到的行后面
S敕:表示條件取反
地址定界! 編輯命令:
s/// :查找替換了赌,其分割符可自行指定,常用的有:s@@@, s###
替換標記:
g:全局替換
w /path/to/somefile:將替換成功的結果保存至指定文件中玄糟;
p:顯示替換成功的行勿她;
Q6、用bash實現(xiàn)統(tǒng)計訪問日志文件中狀態(tài)碼大于等于400的IP數(shù)量并排序
sed -n -r '/<40[0-9]>/p' /var/log/httpd/access_log|cut -d" " -f1 |sort|uniq -c
Q7阵翎、使用自制的yum源安裝ftp逢并、openssh、curl贮喧、wget筒狠、tcpdump等軟件包
1、root目錄下箱沦,新建目錄myrepo/Packages殿漠。
2肮韧、 從光盤中復制相應的rpm包到Pacakges目錄。
3弥鹦、 執(zhí)行命令createrepo -u /root/myrepo/Packages /root/myrepo
4疆前、 編輯文件/etc/yum.repos.d/myrepo.repo寒跳,添加如下內容:
[myrepo]
name=my custom repo
baseurl=file:///root/myrepo
enabled=1
gpgcheck=0
5、yum install XXX