Q一、每12小時備份並壓縮/etc/目錄至/backup目錄中,保存文件名稱格式爲,"etc-年-月-日-時-分.tar.gz"node
在crontab -e中:* */12 * * * tar czf /back/etc-`date +"%F-%H-%M"`.tar.gz /etclinux
Q二、rpm包管理功能總結以及實例應用演示正則表達式
RPM,原名Red-hat Package Manager,成爲行業標準後更名爲RPM Package Manager。數據庫
RPM包的命名格式爲:{package}-{version}-{release}.{arch}.rpm。express
比較大的包能夠分紅主包和多個子包,主包包含主要功能,子包包含擴展功能。主包命名格式:{masterpackage}-{version}-{release}.{arch}.rpm,子包命名格式:{masterpackage}-{subpackage}-{version}-{release}.{arch}.rpm。centos
CentOS系統上rpm命令管理程序包:緩存
安裝、升級、卸載、查詢和校驗、數據庫維護bash
rpm命令:rpm【OPTIONS】【Package FIle】ssh
安裝:-i,--installcurl
升級:-U,--update,-F,--freshen
卸載:-e,--erase
查詢:-q,--query
校驗:-V,--verify
數據庫維護:--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:卸載過程真正開始執行以前運行的腳本,%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:用於實現對未安裝的程序包執行查詢操做
--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、驗證包來源合法性和完整性:
來源合法性:
數字簽名
完整性驗證
獲取並導入信任的包製做者的密鑰;
對於centos發行版來講,rpm-import /etc/pki/rpm-gpg/PM-GPG-KEY-CentOS-7
驗證:
(1)安裝此組織簽名的程序時,會自動執行驗證
(2)手動驗證:rpm -K PACKAGE_FILE
7、數據庫重建:
Rpm 管理器數據庫路徑:/var/lib/rpm
查詢操做:經過此處的數據庫進行;
Rpm {--initdb|--rebuilddb}
Initdb:初始化
若是事先不存在數據庫,則新建之,不然,不執行任何操做
rebuilddb:重建
不管當前存在與否,直接從新建立數據庫
Q三、yum的配置和使用總結以及yum私有倉庫的建立。
yum用法:yum [options] [command] [package ...]
yum子命令:
install:安裝指定的(多個)包或包組。
update:更新。若是不指定任何包,會升級全部已經安裝的包。
update-to:相似update命令,可是升級到指定的版本。
update-minimal:相似update命令,但只升級到比當前版本高的最低版本。
check-update:檢查是否有更新。命令狀態碼返回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:根據包名和描述查找相關的包。
info:查看指定包的描述信息,可用的opion同list命令。
clean:清除yum緩存目錄下的文件。
expire-cache:過時的元數據和鏡像列表。
packages:rpm包。
headers:頭文件。
metadata:元數據文件。
dbcache:本地元數據庫。
rpmdb:rpm緩存。
plugins:擴展插件緩存。
all:以上全部。
makecache:構建元數據的緩存。
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:不檢查來源合法性。
建立yum倉庫:createrepo [options] DIRECTORY
-u URL:指定baseurl,訪問倉庫的url。
--basedir:指向rpm文件目錄的路徑,默認是當前目錄
-x:排除的文件,可用glob指定。
倉庫元數據:在倉庫的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,爲指定的倉庫提供配置。
配置文件中的變量:
$releaseserver:當前發行版的主版本號
$arch:CPU平臺體系
$basearch:基礎CPU平臺體系。
$YUM0-$YUM9:自定義變量。
配置文件格式:
[repoid] # 倉庫的惟一標識
name=NAME # 倉庫的名稱
baseurl=URL # 訪問倉庫的路徑,可用ftp://、http://、file:/// 協議指定,可指定多個,一行一個
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、寫一個腳本實現列出如下菜單給用戶:
(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" == 'disk' ];then
fdisk -l /dev/[sh]d[a-z]
elif [ "$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::全部奇數行
2~2:全部偶數行
編輯命令:
d:刪除
]# sed -n '1,5d' fstab
-n 不輸出
顯示偶數行:
]# sed '1~2d' fstab
-p:顯示模式空間中的內容
]# sed -n '1~2p' fstab
顯示奇數行
a \test:在行後面追加文本「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:顯示替換成功的行;
Q6、用bash實現統計訪問日誌文件中狀態碼大於等於400的IP數量並排序
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、 執行命令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