2019-05-27

1、每12小時備份并壓縮/etc/目錄至/backup目錄中,保存文件名稱格式為"etc-年-月-日-時-分.tar.gz"

mkdir /backup
crontab -e
1 */12 * * * /bin/tar -zcf /backup/etc-$(date +\%F-\%H-\%M) /etc &>/dev/null
crontab中的用戶命令中需要使用%時,需要進行轉義

2、rpm包管理功能總結以及實例應用演示。

安裝

rpm{-i|--install} [install-options] PAKCKAGE_FILE1...

-h:hash,以#來表示安裝進度,每個#表示2%的進度
-v,--verbose:顯示安裝過程中的詳細信息
-vv:更詳細信息
--test:不執行真正的安裝過程,檢查并報告依賴關系及沖突消息等
--nodeps:忽略依賴關系,能成功安裝,但未必能成功運行
--replacepkgs:覆蓋安裝,重新安裝并覆蓋原有的文件
--force:強制安裝

安裝時常用的組合:-ivh,-ivvh

升級

rpm{-U | --upgrade}[install-options] PACKAGE_FILE...
-U:升級或安裝
rpm{-F|--freshen} [install-options]PCKAGE_FILE...
-F:升級

--test:不執行真正的安裝過程,檢查并報告依賴關系及沖突消息等
--nodeps:忽略依賴關系,能成功安裝,但未必能成功運行
--oldpackage:降級到舊版本

常用組合:-Uvh,-Fvh
注意:1)不要對內核做升級操作;Linux支持多內核版本并存,因此,直接安裝新版本內核
2)如果某原程序包的配置文件安裝后曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供

卸載

rpm {-e|--erase}[--allmatches][--nodeps][--noscripts][--test]PACKAGE_NAME...

--nodeps:忽略依賴關系
--test:測試卸載;dry-run模式
--allmatches:卸載所有匹配指定名稱的程序包的各版本

注意:如果程序包的配置文件安裝后曾被修改,卸載時,此文件通常不會被刪除,而是被重命名(FILENAME.rpmsave)后留存

查詢

rpm {-q|--query}[select-options][query-options]

[select-options]
-a,--all:查詢所有已經安裝過的包
-f FILE:查詢指定的文件由哪個程序包安裝生成
-p,--package PACKAGE_FILE:用于實現對未安裝的程序包執行查詢操作
--whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供
--whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴
[query-options]
--changelog:查看某包制作時隨版本變化的changlog信息;
-l,--list:某包安裝生成的所有文件列表
-i,--info:程序包簡要說明信息,版本號,大小,所屬的包組等
-c,--configfiles:查詢指定的程序包提供的配置文件
-d,--docfiles:查詢指定的程序包提供的文檔
--provides:列出指定的程序包提供的所有CAPABILITY
-R,--requires:查詢指定的程序包的依賴關系
--scripts:查看程序包安裝或卸載時執行腳本

腳本有四類:--noscripts
preinstall:安裝過程開始之前運行的腳本,%pre,--nopre
postinstall:安裝過程完成之后運行腳本,%post,--nopost
preunistall:卸載過程開始執行之前運行的腳本,%preun.--nopreun
postuninstall:卸載過程完成之后運行的腳本,%ppostun,--nopostun

校驗

rpm {-V|--verify}[select-options][verify-options]

常見用法:rpm -V PACKAGE_NAME
當沒有輸出結果時表示軟件包完整,當有相應的結果輸出表明對應的內容有修改:
S :(file Size differs )文件的容量大小是否被改變
M: (Mode differs) 文件的類型或文件屬性(rwx)是否被改變
5: (MD5 sum differs)MD5這一種指紋密碼的內容已經不同
D: (Device major/minor number mismatch)設備的主/次代碼已經改變
L: (readLink(2) path mismatch)Link路徑已改變
U: (User ownership differs)屬主已改變
G :(Group ownership differs)屬組已改變
T :(mTime differs)文件修改時間已改變
P: caPabilities differ

驗證光盤中程序包的來源及完整性:
導入合法KEY文件:rpm --import /path/to/RPM-GPG-KEY-FILE
[select-options]
-a,--all:查詢所有已經安裝過的包
-f FILE:查詢指定的文件由哪個程序包安裝生成
-p,--package PACKAGE_FILE:用于實現對未安裝的程序包執行查詢操作
--whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供
--whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴
[query-options]
--changelog:查看某包制作時隨版本變化的changlog信息;
-l,--list:某包安裝生成的所有文件列表
-i,--info:程序包簡要說明信息,版本號,大小,所屬的包組等
-c,--configfiles:查詢指定的程序包提供的配置文件
-d,--docfiles:查詢指定的程序包提供的文檔
--provides:列出指定的程序包提供的所有CAPABILITY
-R,--requires:查詢指定的程序包的依賴關系
--scripts:查看程序包安裝或卸載時執行腳本
>>>> 腳本有四類:--noscripts
preinstall:安裝過程開始之前運行的腳本,%pre,--nopre
postinstall:安裝過程完成之后運行腳本,%post,--nopost
preunistall:卸載過程開始執行之前運行的腳本,%preun.--nopreun
postuninstall:卸載過程完成之后運行的腳本,%ppostun,--nopostun

>校驗
>>rpm {-V|--verify}[select-options][verify-options]
>>> 常見用法:rpm -V PACKAGE_NAME
當沒有輸出結果時表示軟件包完整,當有相應的結果輸出表明對應的內容有修改:
S :(file Size differs )文件的容量大小是否被改變
M: (Mode differs) 文件的類型或文件屬性(rwx)是否被改變
5: (MD5 sum differs)MD5這一種指紋密碼的內容已經不同
D: (Device major/minor number mismatch)設備的主/次代碼已經改變
L: (readLink(2) path mismatch)Link路徑已改變
U: (User ownership differs)屬主已改變
G :(Group ownership differs)屬組已改變
T :(mTime differs)文件修改時間已改變
P: caPabilities differ
>>>>驗證光盤中程序包的來源及完整性:
導入合法KEY文件:rpm --import /path/to/RPM-GPG-KEY-FILE
驗證:rpm{ -k|--checksig} PACKAGE_FILE
構建數據庫
rpm{--initdb|--rebuilddb} [-v][--depath DIRECTORY]
--initdb:初始化數據庫,當前無任何數據庫可開始化創建一個新的;當前有時不執行任何操作
--rebuilddb:重建構造,通過讀取當前系統上所有已安裝過的程序包進行創建

示例

     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的配置和使用總結以及yum私有倉庫的創建。

yum的配置

1)主配置文件:/etc/yum.conf 為各倉庫指向提供公共配置文件

cachedir=/var/cache/yum/$basearch/$releasever  #yum下載的RPM包的緩存目錄 
keepcache=0  #緩存是否保存,1保存,0不保存
debuglevel=2   #調試級別(0-10),默認為2
logfile=/var/log/yum.log    #yum的日志文件所在的位置
exactarch=1    #在更新的時候,是否允許更新不同版本的RPM包
obsoletes=1      #這是一個update的參數,具體請參閱yum(8),簡單的說就是相當于upgrade,允許更新陳舊的RPM包。 
gpgcheck=1     #是否檢查GPG(GNU Private Guard),一種密鑰方式簽名。
plugins=1      #是否允許使用插件,默認是0不允許
installonly_limit=5     #允許保留多少個內核包
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)各倉庫的定義:/etc/yum.repos.d/*.repo

[fasttrack] #[repositoryid]用于唯一標識repository指向,其必須唯一
name=CentOS-6 - fasttrack #當前倉庫描述信息
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=fasttrack&infra=$infra      
baseurl=http://mirror.centos.org/centos/$releasever/fasttrack/$basearch/
#指明repository的訪問路徑;URL支持的類型:
      #ftp服務:ftp://SERVER/PATH/TO/REPOSITORY
      #http服務:http://SERVER/PATH/TO/REPOSITORY
    ` #本地目錄:file:///PATH/TO/REPOSTIROY
gpgcheck=1 #是否對程序包做校驗
enabled=0    #此倉庫是否可被使用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #指明當前gpgkey文件路徑
cost= #指明當前repository的訪問開銷,默認為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]

倉庫管理

yum repolist:列出已經配置的所有可用倉庫
yum repolist [all|enabled|disabled]

yum緩存管理

yum clean:清理緩存
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
yum makecache:創建緩存,自動連接至每一個可用倉庫

程序包安裝

yum install package1 [package2] [...]

重新安裝(覆蓋安裝)

yum reinstall package1 [package2] [...]

程序包升級

yum update [package1] [package2] [...]

程序包降級

yum downgrade package1 [package2] [...]

檢查可用升級

yum check-update

程序包卸載

yum remove package1 [package2] [...]

查詢

查看指定的特性(可以是某文件)是由哪個程序包所提供
provides | whatprovides feature1 [feature2] [...]
查看程序包information
info [...]
在包名和sumary信息中搜索指定的關鍵字:
search string1 [string2] [...]

安裝及升級本地程序包

yum localinstall rpmfile1 [rpmfile2] [...]
yum localupdate rpmfile1 [rpmfile2] [...]

包組管理

安裝:yum groupinstall group1 [group2] [...]
升級:yum groupupdate group1 [group2] [...]
列表:yum grouplist [hidden] [groupwildcard] [...]
卸載:yum groupremove group1 [group2] [...]
顯示指定包組詳情:yum groupinfo group1 [...]

注意:也可直接用install 、remove或update來管理包組,需要在組名前加@符號,如yum install@"Server Platform Development"

yum的命令選項

--nogpgcheck:禁止進行gpg check;
-y:自動回答為“yes”
-q:靜默模式
--disablerepo=repoidglob:臨時禁用此處指定的repo
--enablerepo=repoidglob:臨時啟用此處指定的repo
--noplugins:禁用所有插件

yum私有倉庫的創建

1.安裝createrepo程序包
2.確定repository輸出方式
1)本地輸出:提供一個放置rpm包的本地路徑
file形式
2)網絡輸出:提供一個文件服務器,配置好ftp服務或http服務
ftp服務:
安裝程序包:vsftpd
文件存放路徑:/var/ftp/pub
啟動服務:service vsftpd start
http服務:
安裝程序包:httpd
文件存放路徑:/var/www/html
程序包降級
>>>yum downgrade package1 [package2] [...]

>>檢查可用升級
>>>yum check-update

>>程序包卸載
>>>yum remove package1 [package2] [...]

>>查詢
>>>查看指定的特性(可以是某文件)是由哪個程序包所提供
provides | whatprovides feature1 [feature2] [...]
查看程序包information
info [...]
在包名和sumary信息中搜索指定的關鍵字:
search string1 [string2] [...]

>>安裝及升級本地程序包
>>>yum localinstall rpmfile1 [rpmfile2] [...]
yum localupdate rpmfile1 [rpmfile2] [...]

>>包組管理
>>>安裝:yum groupinstall group1 [group2] [...]
升級:yum groupupdate group1 [group2] [...]
列表:yum grouplist [hidden] [groupwildcard] [...]
卸載:yum groupremove group1 [group2] [...]
顯示指定包組詳情:yum groupinfo group1 [...]
>>>>注意:也可直接用install 、remove或update來管理包組,需要在組名前加@符號,如yum install@"Server Platform Development"

>>yum的命令選項
>>>--nogpgcheck:禁止進行gpg check;
-y:自動回答為“yes”
-q:靜默模式
--disablerepo=repoidglob:臨時禁用此處指定的repo
--enablerepo=repoidglob:臨時啟用此處指定的repo
--noplugins:禁用所有插件


>yum私有倉庫的創建
>>1.安裝createrepo程序包
2.確定repository輸出方式
1)本地輸出:提供一個放置rpm包的本地路徑
file形式
2)網絡輸出:提供一個文件服務器,配置好ftp服務或http服務
ftp服務:
安裝程序包:vsftpd
文件存放路徑:/var/ftp/pub
啟動服務:service vsftpd start
http服務:
安裝程序包:httpd
文件存放路徑:/var/www/html
啟動服務:service httpd start
注意:確保關閉防火墻服務
3)在準備好的目錄中放置rpm程序包
yum remove package1 [package2] [...]

>>查詢
>>>查看指定的特性(可以是某文件)是由哪個程序包所提供
provides | whatprovides feature1 [feature2] [...]
查看程序包information
info [...]
在包名和sumary信息中搜索指定的關鍵字:
search string1 [string2] [...]

>>安裝及升級本地程序包
>>>yum localinstall rpmfile1 [rpmfile2] [...]
yum localupdate rpmfile1 [rpmfile2] [...]

>>包組管理
>>>安裝:yum groupinstall group1 [group2] [...]
升級:yum groupupdate group1 [group2] [...]
列表:yum grouplist [hidden] [groupwildcard] [...]
卸載:yum groupremove group1 [group2] [...]
顯示指定包組詳情:yum groupinfo group1 [...]
>>>>注意:也可直接用install 、remove或update來管理包組,需要在組名前加@符號,如yum install@"Server Platform Development"

>>yum的命令選項
>>>--nogpgcheck:禁止進行gpg check;
-y:自動回答為“yes”
-q:靜默模式
--disablerepo=repoidglob:臨時禁用此處指定的repo
--enablerepo=repoidglob:臨時啟用此處指定的repo
--noplugins:禁用所有插件


>yum私有倉庫的創建
>>1.安裝createrepo程序包
2.確定repository輸出方式
1)本地輸出:提供一個放置rpm包的本地路徑
file形式
2)網絡輸出:提供一個文件服務器,配置好ftp服務或http服務
ftp服務:
安裝程序包:vsftpd
文件存放路徑:/var/ftp/pub
啟動服務:service vsftpd start
http服務:
安裝程序包:httpd
文件存放路徑:/var/www/html
啟動服務:service httpd start
注意:確保關閉防火墻服務
3)在準備好的目錄中放置rpm程序包
4)對此目錄執crearerepo命令即可

4、寫一個腳本實現列出以下菜單給用戶:

(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用法總結并結合實例演示

sed [OPTION]... ‘script’ [input-file]...[actions]

OPTION(常用選項)

-n:不輸出模式空間中的內容至屏幕
-e script,--expression=script:多點編輯
-f /PATH/TO/SED_SCRIPT_FILE
每行一個編輯命令:
-r,--regexp-extended:支持使用擴展正則表達式
-i[SUFFIX],--in-place[-SUFFIX]:直接編輯原文件

‘script'(地址定界編輯命令)

地址定界
(1)空地址:對全文進行處理;
(2)單地址:
#:指定行
/pattern/:被此模式所匹配到的每一行
(3)地址范圍
#,#:
#,+#:
#,/part1/
/paer1/,/part2/
$:最后一行
(4)步進:~
1~2:所有奇數行
2~2:所有偶數行

編輯命令
d:刪除
p:顯示模式空間中的內容;
a \test:在行后面追加文本“test”,支持使用\n實現多行追加
i \test:在行前面插入文本"test",支持使用\n實現多行插入
c \test:把匹配到的行替換為此處指定的文本“test”
w /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中
r /PATH/FROM/SOMEFILE:讀取指定文件的內容至當前文件被模式匹配到的行后面;文件合并
=:為模式匹配到的行打印行號
!:條件取反

高級編輯命令
h:把模式空間中的內容覆蓋至保持空間中;
H:把模式空間中的內容追加至保持空間中;
g: 把保持空間中的內容覆蓋至模式空間中;
G :把保持空間中的內容追加至模式空間中;
x:把模式空間中的內容和保持空間中的內容互換
n:覆蓋讀取匹配到的行的下一行至模式空間中
N:追加讀取匹配到的行的下一行至模式空間中
d:刪除模式空間中的行
D:刪除多行模式空間中的所有行

示例
輸出一個絕對路徑給sed命令,取出其目錄,其行為類似于dirname
echo "/var/log/messeges/" | sed -r 's@[^/]+/?@@' 刪除原有的所有空白行,而后為所有的非空白行后添加一個空白行 sed '/^/d;G' FILE

6、 用bash實現統計訪問日志文件中狀態碼大于等于400的IP數量并排序

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
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容