1汪拥、每12小時(shí)備份并壓縮/etc/目錄至/backup目錄中建蹄,保存文件名稱(chēng)格式為"etc-年-月-日-時(shí)-分.tar.gz"
mkdir /backup
crontab -e
1 */12 * * * /bin/tar -zcf /backup/etc-$(date +\%F-\%H-\%M) /etc &>/dev/null
crontab中的用戶(hù)命令中需要使用%時(shí)筷狼,需要進(jìn)行轉(zhuǎn)義
2棍潘、rpm包管理功能總結(jié)以及實(shí)例應(yīng)用演示恃鞋。
安裝
rpm{-i|--install} [install-options] PAKCKAGE_FILE1...
-h:hash,以#來(lái)表示安裝進(jìn)度,每個(gè)#表示2%的進(jìn)度
-v,--verbose:顯示安裝過(guò)程中的詳細(xì)信息
-vv:更詳細(xì)信息
--test:不執(zhí)行真正的安裝過(guò)程蜒谤,檢查并報(bào)告依賴(lài)關(guān)系及沖突消息等
--nodeps:忽略依賴(lài)關(guān)系,能成功安裝山宾,但未必能成功運(yùn)行
--replacepkgs:覆蓋安裝,重新安裝并覆蓋原有的文件
--force:強(qiáng)制安裝安裝時(shí)常用的組合:-ivh,-ivvh
升級(jí)
rpm{-U | --upgrade}[install-options] PACKAGE_FILE...
-U:升級(jí)或安裝
rpm{-F|--freshen} [install-options]PCKAGE_FILE...
-F:升級(jí)--test:不執(zhí)行真正的安裝過(guò)程鳍徽,檢查并報(bào)告依賴(lài)關(guān)系及沖突消息等
--nodeps:忽略依賴(lài)關(guān)系,能成功安裝资锰,但未必能成功運(yùn)行
--oldpackage:降級(jí)到舊版本常用組合:-Uvh,-Fvh
注意:1)不要對(duì)內(nèi)核做升級(jí)操作;Linux支持多內(nèi)核版本并存阶祭,因此绷杜,直接安裝新版本內(nèi)核
2)如果某原程序包的配置文件安裝后曾被修改過(guò),升級(jí)時(shí)濒募,新版本的程序提供的同一個(gè)配置文件不會(huì)覆蓋原有版本的配置文件鞭盟,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供
卸載
rpm {-e|--erase}[--allmatches][--nodeps][--noscripts][--test]PACKAGE_NAME...
--nodeps:忽略依賴(lài)關(guān)系
--test:測(cè)試卸載;dry-run模式
--allmatches:卸載所有匹配指定名稱(chēng)的程序包的各版本注意:如果程序包的配置文件安裝后曾被修改瑰剃,卸載時(shí)齿诉,此文件通常不會(huì)被刪除,而是被重命名(FILENAME.rpmsave)后留存
查詢(xún)
rpm {-q|--query}[select-options][query-options]
[select-options]
-a,--all:查詢(xún)所有已經(jīng)安裝過(guò)的包
-f FILE:查詢(xún)指定的文件由哪個(gè)程序包安裝生成
-p,--package PACKAGE_FILE:用于實(shí)現(xiàn)對(duì)未安裝的程序包執(zhí)行查詢(xún)操作
--whatprovides CAPABILITY:查詢(xún)指定的CAPABILITY由哪個(gè)程序包提供
--whatrequires CAPABILITY:查詢(xún)指定的CAPABILITY被哪個(gè)包所依賴(lài)
[query-options]
--changelog:查看某包制作時(shí)隨版本變化的changlog信息晌姚;
-l,--list:某包安裝生成的所有文件列表
-i粤剧,--info:程序包簡(jiǎn)要說(shuō)明信息,版本號(hào)挥唠,大小抵恋,所屬的包組等
-c,--configfiles:查詢(xún)指定的程序包提供的配置文件
-d,--docfiles:查詢(xún)指定的程序包提供的文檔
--provides:列出指定的程序包提供的所有CAPABILITY
-R,--requires:查詢(xún)指定的程序包的依賴(lài)關(guān)系
--scripts:查看程序包安裝或卸載時(shí)執(zhí)行腳本腳本有四類(lèi):--noscripts
preinstall:安裝過(guò)程開(kāi)始之前運(yùn)行的腳本,%pre,--nopre
postinstall:安裝過(guò)程完成之后運(yùn)行腳本宝磨,%post弧关,--nopost
preunistall:卸載過(guò)程開(kāi)始執(zhí)行之前運(yùn)行的腳本,%preun.--nopreun
postuninstall:卸載過(guò)程完成之后運(yùn)行的腳本唤锉,%ppostun,--nopostun
校驗(yàn)
rpm {-V|--verify}[select-options][verify-options]
常見(jiàn)用法:rpm -V PACKAGE_NAME
當(dāng)沒(méi)有輸出結(jié)果時(shí)表示軟件包完整世囊,當(dāng)有相應(yīng)的結(jié)果輸出表明對(duì)應(yīng)的內(nèi)容有修改:
S :(file Size differs )文件的容量大小是否被改變
M: (Mode differs) 文件的類(lèi)型或文件屬性(rwx)是否被改變
5: (MD5 sum differs)MD5這一種指紋密碼的內(nèi)容已經(jīng)不同
D: (Device major/minor number mismatch)設(shè)備的主/次代碼已經(jīng)改變
L: (readLink(2) path mismatch)Link路徑已改變
U: (User ownership differs)屬主已改變
G :(Group ownership differs)屬組已改變
T :(mTime differs)文件修改時(shí)間已改變
P: caPabilities differ驗(yàn)證光盤(pán)中程序包的來(lái)源及完整性:
導(dǎo)入合法KEY文件:rpm --import /path/to/RPM-GPG-KEY-FILE
[select-options]
-a,--all:查詢(xún)所有已經(jīng)安裝過(guò)的包
-f FILE:查詢(xún)指定的文件由哪個(gè)程序包安裝生成
-p,--package PACKAGE_FILE:用于實(shí)現(xiàn)對(duì)未安裝的程序包執(zhí)行查詢(xún)操作
--whatprovides CAPABILITY:查詢(xún)指定的CAPABILITY由哪個(gè)程序包提供
--whatrequires CAPABILITY:查詢(xún)指定的CAPABILITY被哪個(gè)包所依賴(lài)
[query-options]
--changelog:查看某包制作時(shí)隨版本變化的changlog信息;
-l,--list:某包安裝生成的所有文件列表
-i窿祥,--info:程序包簡(jiǎn)要說(shuō)明信息茸习,版本號(hào),大小壁肋,所屬的包組等
-c,--configfiles:查詢(xún)指定的程序包提供的配置文件
-d,--docfiles:查詢(xún)指定的程序包提供的文檔
--provides:列出指定的程序包提供的所有CAPABILITY
-R,--requires:查詢(xún)指定的程序包的依賴(lài)關(guān)系
--scripts:查看程序包安裝或卸載時(shí)執(zhí)行腳本
>>>> 腳本有四類(lèi):--noscripts
preinstall:安裝過(guò)程開(kāi)始之前運(yùn)行的腳本号胚,%pre,--nopre
postinstall:安裝過(guò)程完成之后運(yùn)行腳本,%post浸遗,--nopost
preunistall:卸載過(guò)程開(kāi)始執(zhí)行之前運(yùn)行的腳本猫胁,%preun.--nopreun
postuninstall:卸載過(guò)程完成之后運(yùn)行的腳本,%ppostun,--nopostun
>校驗(yàn)
>>rpm {-V|--verify}[select-options][verify-options]
>>> 常見(jiàn)用法:rpm -V PACKAGE_NAME
當(dāng)沒(méi)有輸出結(jié)果時(shí)表示軟件包完整跛锌,當(dāng)有相應(yīng)的結(jié)果輸出表明對(duì)應(yīng)的內(nèi)容有修改:
S :(file Size differs )文件的容量大小是否被改變
M: (Mode differs) 文件的類(lèi)型或文件屬性(rwx)是否被改變
5: (MD5 sum differs)MD5這一種指紋密碼的內(nèi)容已經(jīng)不同
D: (Device major/minor number mismatch)設(shè)備的主/次代碼已經(jīng)改變
L: (readLink(2) path mismatch)Link路徑已改變
U: (User ownership differs)屬主已改變
G :(Group ownership differs)屬組已改變
T :(mTime differs)文件修改時(shí)間已改變
P: caPabilities differ
>>>>驗(yàn)證光盤(pán)中程序包的來(lái)源及完整性:
導(dǎo)入合法KEY文件:rpm --import /path/to/RPM-GPG-KEY-FILE
驗(yàn)證:rpm{ -k|--checksig} PACKAGE_FILE
構(gòu)建數(shù)據(jù)庫(kù)
rpm{--initdb|--rebuilddb} [-v][--depath DIRECTORY]
--initdb:初始化數(shù)據(jù)庫(kù)弃秆,當(dāng)前無(wú)任何數(shù)據(jù)庫(kù)可開(kāi)始化創(chuàng)建一個(gè)新的;當(dāng)前有時(shí)不執(zhí)行任何操作
--rebuilddb:重建構(gòu)造,通過(guò)讀取當(dāng)前系統(tǒng)上所有已安裝過(guò)的程序包進(jìn)行創(chuàng)建
示例
rpm -ivh /tmp/htop-1.0.3-1.el6.x86_64.rpm
rpm -e htop
rpm -qpi /tmp/htop-1.0.3-1.el6.x86_64.rpm
warning: /tmp/htop-1.0.3-1.el6.x86_64.rpm: Header V3
Name : htop Relocations: (not relocatable)
Version : 1.0.3 Vendor: Fedora Project
Release : 1.el6 Build Date: Sat 31 Oct 2015 03:26:54 AM CST
Install Date: (not installed) Build Host: buildvm-22.phx2.fedoraproject.org
Group : Applications/System Source RPM: htop-1.0.3-1.el6.src.rpm
Size : 182737 License: GPL+
Signature : RSA/8, Sun 01 Nov 2015 12:06:31 PM CST, Key ID 3b49df2a0608b895
Packager : Fedora Project
URL : http://hisham.hm/htop/
Summary : Interactive process viewer
Description :
htop is an interactive text-mode process viewer for Linux, similar to
top(1).
rpm -ql htop
3髓帽、yum的配置和使用總結(jié)以及yum私有倉(cāng)庫(kù)的創(chuàng)建菠赚。
yum的配置
1)主配置文件:/etc/yum.conf 為各倉(cāng)庫(kù)指向提供公共配置文件
cachedir=/var/cache/yum/$basearch/$releasever #yum下載的RPM包的緩存目錄
keepcache=0 #緩存是否保存,1保存郑藏,0不保存
debuglevel=2 #調(diào)試級(jí)別(0-10)衡查,默認(rèn)為2
logfile=/var/log/yum.log #yum的日志文件所在的位置
exactarch=1 #在更新的時(shí)候,是否允許更新不同版本的RPM包
obsoletes=1 #這是一個(gè)update的參數(shù)必盖,具體請(qǐng)參閱yum(8)拌牲,簡(jiǎn)單的說(shuō)就是相當(dāng)于upgrade,允許更新陳舊的RPM包歌粥。
gpgcheck=1 #是否檢查GPG(GNU Private Guard)塌忽,一種密鑰方式簽名。
plugins=1 #是否允許使用插件失驶,默認(rèn)是0不允許
installonly_limit=5 #允許保留多少個(gè)內(nèi)核包
bugtracker_url=http://bugs.centos.org/set_project.php? project_id=19&ref=http://bugs.centos.org/bug_report_page.php? category=yum
distroverpkg=centos-release
2)各倉(cāng)庫(kù)的定義:/etc/yum.repos.d/*.repo
[fasttrack] #[repositoryid]用于唯一標(biāo)識(shí)repository指向土居,其必須唯一
name=CentOS-6 - fasttrack #當(dāng)前倉(cāng)庫(kù)描述信息
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=fasttrack&infra=$infra
baseurl=http://mirror.centos.org/centos/$releasever/fasttrack/$basearch/
#指明repository的訪問(wèn)路徑;URL支持的類(lèi)型:
#ftp服務(wù):ftp://SERVER/PATH/TO/REPOSITORY
#http服務(wù):http://SERVER/PATH/TO/REPOSITORY
` #本地目錄:file:///PATH/TO/REPOSTIROY
gpgcheck=1 #是否對(duì)程序包做校驗(yàn)
enabled=0 #此倉(cāng)庫(kù)是否可被使用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #指明當(dāng)前gpgkey文件路徑
cost= #指明當(dāng)前repository的訪問(wèn)開(kāi)銷(xiāo)嬉探,默認(rèn)為1000
使用
- install package1 [package2] [...]
* update [package1] [package2] [...]
* update-to [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* distribution-synchronization [package1] [package2] [...]
* remove | erase package1 [package2] [...]
* list [...]
* info [...]
* provides | whatprovides feature1 [feature2] [...]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden] [groupwildcard] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
* search string1 [string2] [...]
* shell [filename]
* resolvedep dep1 [dep2] [...]
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
* reinstall package1 [package2] [...]
* downgrade package1 [package2] [...]
* deplist package1 [package2] [...]
* repolist [all|enabled|disabled]
* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll-
back|new|sync|stats]
* load-transaction [txfile]
* check
* help [command]
倉(cāng)庫(kù)管理
yum repolist:列出已經(jīng)配置的所有可用倉(cāng)庫(kù)
yum repolist [all|enabled|disabled]
yum緩存管理
yum clean:清理緩存
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
yum makecache:創(chuàng)建緩存擦耀,自動(dòng)連接至每一個(gè)可用倉(cāng)庫(kù)
程序包安裝
yum install package1 [package2] [...]
重新安裝(覆蓋安裝)
yum reinstall package1 [package2] [...]
程序包升級(jí)
yum update [package1] [package2] [...]
程序包降級(jí)
yum downgrade package1 [package2] [...]
檢查可用升級(jí)
yum check-update
程序包卸載
yum remove package1 [package2] [...]
查詢(xún)
查看指定的特性(可以是某文件)是由哪個(gè)程序包所提供
provides | whatprovides feature1 [feature2] [...]
查看程序包information
info [...]
在包名和sumary信息中搜索指定的關(guān)鍵字:
search string1 [string2] [...]
安裝及升級(jí)本地程序包
yum localinstall rpmfile1 [rpmfile2] [...]
yum localupdate rpmfile1 [rpmfile2] [...]
包組管理
安裝:yum groupinstall group1 [group2] [...]
升級(jí):yum groupupdate group1 [group2] [...]
列表:yum grouplist [hidden] [groupwildcard] [...]
卸載:yum groupremove group1 [group2] [...]
顯示指定包組詳情:yum groupinfo group1 [...]注意:也可直接用install 、remove或update來(lái)管理包組甲馋,需要在組名前加@符號(hào)埂奈,如yum install@"Server Platform Development"
yum的命令選項(xiàng)
--nogpgcheck:禁止進(jìn)行g(shù)pg check;
-y:自動(dòng)回答為“yes”
-q:靜默模式
--disablerepo=repoidglob:臨時(shí)禁用此處指定的repo
--enablerepo=repoidglob:臨時(shí)啟用此處指定的repo
--noplugins:禁用所有插件
yum私有倉(cāng)庫(kù)的創(chuàng)建
1.安裝createrepo程序包
2.確定repository輸出方式
1)本地輸出:提供一個(gè)放置rpm包的本地路徑
file形式
2)網(wǎng)絡(luò)輸出:提供一個(gè)文件服務(wù)器,配置好ftp服務(wù)或http服務(wù)
ftp服務(wù):
安裝程序包:vsftpd
文件存放路徑:/var/ftp/pub
啟動(dòng)服務(wù):service vsftpd start
http服務(wù):
安裝程序包:httpd
文件存放路徑:/var/www/html
程序包降級(jí)
>>>yum downgrade package1 [package2] [...]
>>檢查可用升級(jí)
>>>yum check-update
>>程序包卸載
>>>yum remove package1 [package2] [...]
>>查詢(xún)
>>>查看指定的特性(可以是某文件)是由哪個(gè)程序包所提供
provides | whatprovides feature1 [feature2] [...]
查看程序包information
info [...]
在包名和sumary信息中搜索指定的關(guān)鍵字:
search string1 [string2] [...]
>>安裝及升級(jí)本地程序包
>>>yum localinstall rpmfile1 [rpmfile2] [...]
yum localupdate rpmfile1 [rpmfile2] [...]
>>包組管理
>>>安裝:yum groupinstall group1 [group2] [...]
升級(jí):yum groupupdate group1 [group2] [...]
列表:yum grouplist [hidden] [groupwildcard] [...]
卸載:yum groupremove group1 [group2] [...]
顯示指定包組詳情:yum groupinfo group1 [...]
>>>>注意:也可直接用install 定躏、remove或update來(lái)管理包組账磺,需要在組名前加@符號(hào),如yum install@"Server Platform Development"
>>yum的命令選項(xiàng)
>>>--nogpgcheck:禁止進(jìn)行g(shù)pg check;
-y:自動(dòng)回答為“yes”
-q:靜默模式
--disablerepo=repoidglob:臨時(shí)禁用此處指定的repo
--enablerepo=repoidglob:臨時(shí)啟用此處指定的repo
--noplugins:禁用所有插件
>yum私有倉(cāng)庫(kù)的創(chuàng)建
>>1.安裝createrepo程序包
2.確定repository輸出方式
1)本地輸出:提供一個(gè)放置rpm包的本地路徑
file形式
2)網(wǎng)絡(luò)輸出:提供一個(gè)文件服務(wù)器痊远,配置好ftp服務(wù)或http服務(wù)
ftp服務(wù):
安裝程序包:vsftpd
文件存放路徑:/var/ftp/pub
啟動(dòng)服務(wù):service vsftpd start
http服務(wù):
安裝程序包:httpd
文件存放路徑:/var/www/html
啟動(dòng)服務(wù):service httpd start
注意:確保關(guān)閉防火墻服務(wù)
3)在準(zhǔn)備好的目錄中放置rpm程序包
yum remove package1 [package2] [...]
>>查詢(xún)
>>>查看指定的特性(可以是某文件)是由哪個(gè)程序包所提供
provides | whatprovides feature1 [feature2] [...]
查看程序包information
info [...]
在包名和sumary信息中搜索指定的關(guān)鍵字:
search string1 [string2] [...]
>>安裝及升級(jí)本地程序包
>>>yum localinstall rpmfile1 [rpmfile2] [...]
yum localupdate rpmfile1 [rpmfile2] [...]
>>包組管理
>>>安裝:yum groupinstall group1 [group2] [...]
升級(jí):yum groupupdate group1 [group2] [...]
列表:yum grouplist [hidden] [groupwildcard] [...]
卸載:yum groupremove group1 [group2] [...]
顯示指定包組詳情:yum groupinfo group1 [...]
>>>>注意:也可直接用install 垮抗、remove或update來(lái)管理包組,需要在組名前加@符號(hào)碧聪,如yum install@"Server Platform Development"
>>yum的命令選項(xiàng)
>>>--nogpgcheck:禁止進(jìn)行g(shù)pg check;
-y:自動(dòng)回答為“yes”
-q:靜默模式
--disablerepo=repoidglob:臨時(shí)禁用此處指定的repo
--enablerepo=repoidglob:臨時(shí)啟用此處指定的repo
--noplugins:禁用所有插件
>yum私有倉(cāng)庫(kù)的創(chuàng)建
>>1.安裝createrepo程序包
2.確定repository輸出方式
1)本地輸出:提供一個(gè)放置rpm包的本地路徑
file形式
2)網(wǎng)絡(luò)輸出:提供一個(gè)文件服務(wù)器冒版,配置好ftp服務(wù)或http服務(wù)
ftp服務(wù):
安裝程序包:vsftpd
文件存放路徑:/var/ftp/pub
啟動(dòng)服務(wù):service vsftpd start
http服務(wù):
安裝程序包:httpd
文件存放路徑:/var/www/html
啟動(dòng)服務(wù):service httpd start
注意:確保關(guān)閉防火墻服務(wù)
3)在準(zhǔn)備好的目錄中放置rpm程序包
4)對(duì)此目錄執(zhí)crearerepo命令即可
4、寫(xiě)一個(gè)腳本實(shí)現(xiàn)列出以下菜單給用戶(hù):
(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
5逞姿、sed用法總結(jié)并結(jié)合實(shí)例演示
sed [OPTION]... ‘script’ [input-file]...[actions]
OPTION(常用選項(xiàng))
-n:不輸出模式空間中的內(nèi)容至屏幕
-e script,--expression=script:多點(diǎn)編輯
-f /PATH/TO/SED_SCRIPT_FILE
每行一個(gè)編輯命令:
-r,--regexp-extended:支持使用擴(kuò)展正則表達(dá)式
-i[SUFFIX],--in-place[-SUFFIX]:直接編輯原文件
‘script'(地址定界編輯命令)
地址定界
(1)空地址:對(duì)全文進(jìn)行處理辞嗡;
(2)單地址:
#:指定行
/pattern/:被此模式所匹配到的每一行
(3)地址范圍
#,#:
#,+#:
#,/part1/
/paer1/,/part2/
$:最后一行
(4)步進(jìn):~
1~2:所有奇數(shù)行
2~2:所有偶數(shù)行
編輯命令
d:刪除
p:顯示模式空間中的內(nèi)容捆等;
a \test:在行后面追加文本“test”,支持使用\n實(shí)現(xiàn)多行追加
i \test:在行前面插入文本"test"续室,支持使用\n實(shí)現(xiàn)多行插入
c \test:把匹配到的行替換為此處指定的文本“test”
w /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中
r /PATH/FROM/SOMEFILE:讀取指定文件的內(nèi)容至當(dāng)前文件被模式匹配到的行后面栋烤;文件合并
=:為模式匹配到的行打印行號(hào)
!:條件取反
高級(jí)編輯命令
h:把模式空間中的內(nèi)容覆蓋至保持空間中挺狰;
H:把模式空間中的內(nèi)容追加至保持空間中明郭;
g: 把保持空間中的內(nèi)容覆蓋至模式空間中;
G :把保持空間中的內(nèi)容追加至模式空間中丰泊;
x:把模式空間中的內(nèi)容和保持空間中的內(nèi)容互換
n:覆蓋讀取匹配到的行的下一行至模式空間中
N:追加讀取匹配到的行的下一行至模式空間中
d:刪除模式空間中的行
D:刪除多行模式空間中的所有行
示例
輸出一個(gè)絕對(duì)路徑給sed命令薯定,取出其目錄,其行為類(lèi)似于dirname
echo "/var/log/messeges/" | sed -r 's@[^/]+/?/d;G' FILE
6话侄、 用bash實(shí)現(xiàn)統(tǒng)計(jì)訪問(wèn)日志文件中狀態(tài)碼大于等于400的IP數(shù)量并排序
sed -n -r '/<40[0-9]>/p' /var/log/httpd/access_log | cut -d" " -f1 | sort | uniq -c
7、 使用自制的yum源安裝ftp苛败、openssh满葛、curl、wget罢屈、tcpdump等軟件包
mkdir /tmp/test
createrepo /tmp/test
vim /etc/yum.repos.d/CentOS-Test.repo
[TEST]
name=CentOS-7-TEST
baseurl=file:///tmp/test
gpcheck=0
enabled=1
cost=100