1凶异、每12小時備份并壓縮/etc/目錄至/backup目錄中蜀撑,保存文件名稱格式為,"etc-年-月-日-時-分.tar.gz"
- crontab表達方式
* * * * *
從前到后分別表示分 時 日 月 周
*/2
表示每2(分鐘剩彬、小時 *所代表的要能被2整除) - date表達方式
%Y
年份(例如2019)
%m
月份(01..12)
%d
按月計的日期(例如:01)
%H
時(00-23)
%M
分鐘(00..59)
%S
秒(00-60) - 實現(xiàn)步驟
1酷麦、創(chuàng)建備份目錄
[root@node01 ~]# mkdir -p /backup
[root@node01 ~]# cd /backup/
[root@node01 backup]# ls
2、編輯crontab
[root@node01 backup]# crontab -e
##這里我們使用.xz的方式壓縮襟衰,即每天的12點贴铜、0點的0分鐘,進行一次備份
0 */12 * * * /usr/bin/tar -Jcvf /backup/etc-$(date +"\%Y-\%m-\%d-\%H").tar.xz /etc > /dev/null
[root@node01 backup]# ls -l
總用量 282592
-rw-r--r--. 1 root root 6883312 1月 4 12:00 etc-2019-01-04-12.tar.xz
-rw-r--r--. 1 root root 6887508 1月 5 00:00 etc-2019-01-05-00.tar.xz
-rw-r--r--. 1 root root 6887508 1月 5 12:00 etc-2019-01-05-12.tar.xz
-rw-r--r--. 1 root root 6887508 1月 6 00:00 etc-2019-01-06-00.tar.xz
-rw-r--r--. 1 root root 6887508 1月 6 12:00 etc-2019-01-06-12.tar.xz
-rw-r--r--. 1 root root 6887508 1月 7 00:00 etc-2019-01-07-00.tar.xz
-rw-r--r--. 1 root root 6886940 1月 7 12:00 etc-2019-01-07-12.tar.xz
2瀑晒、rpm包管理功能總結(jié)以及實例應(yīng)用演示绍坝。
簡介
RPM全名是redhat package manage ,是用來管理軟件的各種操作,包括安裝、更新苔悦、刪除轩褐、查詢、認證玖详。它最大的特點是將軟件事先編譯,然后打包成為RPM機制的包文件,并且包中記錄了此軟件在安裝時需要的其他依賴軟件把介。在安裝時RPM會根據(jù)記錄比較本地主機數(shù)據(jù)庫中的記錄是否滿足依賴,若滿足則安裝,并且把此軟件的信息也寫入數(shù)據(jù)庫,不滿足則不予安裝。RPM包命名格式
RPM包分為主包和子功能包
主包:name-version-release.(os).arch.rpm
子包:name-function-version-release.(os).arch.rpm
name:包名
version:源碼的版本號,version的格式為major.minor.release,major源代碼的主版本號蟋座、minor為次版本號拗踢、release為源代碼的發(fā)行次數(shù)
release:rpm包的發(fā)行號
os:操作系統(tǒng)(可有可無)
arch:硬件架構(gòu),有i386、i486向臀、i586巢墅、i686、x86_64、powerpc等,其中noarch指無硬件架構(gòu)限制
function:說明子包的功能特性-
獲取程序包的途徑:
- 1君纫、系統(tǒng)發(fā)行版的光盤或官方的文件服務(wù)器(或鏡像站點)
http://mirrors.aiyum.com
http://mirrors.163.com - 2驯遇、項目的官方站點
- 3、第三方組織:
EPEL
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
建議:檢查其合法性蓄髓,源合法性叉庐,程序包的完整性
- 1君纫、系統(tǒng)發(fā)行版的光盤或官方的文件服務(wù)器(或鏡像站點)
-
rpm命令的使用
rpm命令按照用途可以分為 安裝、升級会喝、卸載陡叠、查詢、校驗好乐、數(shù)據(jù)庫維護這六個區(qū)塊,下面我們就對各個區(qū)塊的常用使用方法進行說明- 1匾竿、安裝
rpm {-i|--install} [install-option] PACKAGE_FILE(包完整文件名)…
-i或者—install為安裝選項,一般會配合-v、-h參數(shù)一同使用蔚万。-v為顯示具體的安裝信息,-h為顯示安裝進度岭妖。
[install-option] 為安裝選項下具體功能選項,常用的有
--nodeps
安裝時忽略軟件的依賴關(guān)系強制安裝
--nosignature
安裝時不驗證包的數(shù)字簽名即不驗證包的來源合法性
--noscripts
禁止軟件在安裝前或后自動執(zhí)行某些腳本
--force
強制安裝,--replacefiles和—replacepkgs的綜合體
--test
不安裝只是測試軟件能否安裝到當前環(huán)境,若不能會給出提示
--prefix
將軟件安裝到想要的路徑中,后面接路徑名
安裝示例:
[root@node01 Packages]# rpm -ivh zip-3.0-11.el7.x86_64.rpm 準備中... ################################# [100%] 正在升級/安裝... 1:zip-3.0-11.el7 ################################# [100%]
2、更新
rpm {-U|--upgrade} [install-options]PACKAGE_FILE(包完整文件名) ...
rpm {-F|--freshen} [install-options]PACKAGE_FILE(包完整文件名) ...
同安裝一樣,更新也會和-h反璃、-v選項一同使用
rpm -Uvh name.release.rpm
后面接的軟件若不存在,則予以安裝,存在則更新
rpm -Fvh name.release.rpm
后面接的軟件若不存在,則不安裝,存在則更新3昵慌、卸載
rpm {-e|--erase} [erase-option] PACKAGE_NAME(已安裝的軟件名) ...
[erase-option]
--allmatches
卸載所有匹配后面接的軟件名的程序包
--nodeps
忽略依賴關(guān)系,強制卸載。但卸載后依賴此軟件的其他軟件會不能使用
--noscripts
在卸載過程前或后不執(zhí)行任何腳本
--test
只測試,不真正卸載4淮蜈、查詢
rpm {-q|--query} [select-options][query-options]
rpm在查詢時是查詢/var/lib/rpm這個數(shù)據(jù)庫中的信息,并且rpm還可以查詢未安裝的rpm文件內(nèi)的信息
[query-option]
-i
列出該軟件的詳細信息
-l
列出軟件安裝生成的所有文件列表
-c
列出該軟件的配置文件
-d
列出該軟件的說明文件
-R
查詢該軟件的依賴關(guān)系
-s
列出軟件包中所有文件的狀態(tài)
--provides
列出這個軟件包提供的功能
--scripts
列出這個軟件包在安裝或卸載前后可以運行的腳本
--changelog
顯示軟件包的歷史更改信息
[select-options]
-a
列出所有已經(jīng)安裝的軟件
-f FILE
后面接文件名,查詢該文件屬于哪個程序
--whatprovides CAPABILITY
查詢指定的CAPABILITY由哪個程序包提供
--whateequires CAPABILITY
查詢哪些程序包依賴此CAPABILITY
查詢示例:
- 1匾竿、安裝
[root@node01 Packages]# rpm -qa httpd
httpd-2.4.6-88.el7.centos.x86_64
[root@node01 Packages]# rpm -qf /etc/httpd/conf/httpd.conf
httpd-2.4.6-88.el7.centos.x86_64
[root@node01 Packages]# rpm -q --whatprovides httpd
httpd-2.4.6-88.el7.centos.x86_64
[root@node01 Packages]# rpm -q --whatrequires httpd
沒有軟件包需要 httpd
[root@node01 Packages]# rpm -q --whatrequires bash
dracut-033-502.el7.x86_64
initscripts-9.49.39-1.el7.x86_64
lvm2-2.02.171-8.el7.x86_64
rsyslog-8.24.0-12.el7.x86_64
[root@node01 Packages]# rpm -qc httpd
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/logrotate.d/httpd
/etc/sysconfig/htcacheclean
/etc/sysconfig/httpd
- 5斋攀、校驗
rpm {-V|--verify} [select-options] [verify-options]
[verify-options]
--nodeps
不驗證包的依賴關(guān)系
--nodigest
不驗證包的完整性
--nosignature
不驗證包的來源可靠性
-f FILE
驗證某個文件的完整性
一般我們校驗時都最好都檢查下,所以直接使用rpm -V package_name 即可。
校驗后無任何顯示輸出,說明包的完整性;如果有變化,會顯示具體的變化項目
S:文件容量被改變
M:文件屬性被改變
5:MD5和被改變,即數(shù)據(jù)的內(nèi)容被改變
D:設(shè)備的主梧田、次代碼被改變
L:link路徑被改變
U:文件屬主被改變
G:文件屬組被改變
T:文件的修改時間被改變
P:功能被改變
例如:修改httpd.conf 文件后在對包進行校驗
[root@node01 conf]# rpm -V httpd
S.5....T. c /etc/httpd/conf/httpd.conf
顯示httpd這個程序中的/etc/httpd/conf/httpd.conf這個文件的數(shù)據(jù)內(nèi)容和修改時間有過變動
-
6淳蔼、rpm包來源合法性及包完整性驗證機制
rpm包的制作者通過單向加密技術(shù)提取出包數(shù)據(jù)的特征碼,特征碼用于確保包數(shù)據(jù)的完整性,如果包中數(shù)據(jù)被改動,那特征碼也一定會發(fā)生改變。之后包制作者使用非對稱加密技術(shù),利用其中的私鑰對之前產(chǎn)生的特征碼進行加密,此加密被稱為數(shù)字簽名,并公布與私鑰對應(yīng)的公鑰給下載者,由于公鑰只能解密對應(yīng)的私鑰,若數(shù)字簽名被改動,則公鑰不能解密,說明下載來源出現(xiàn)問題,從而保證了rpm包的來源合法性裁眯。之后下載者通過同樣的單向加密技術(shù)對rpm包提取特征碼,如果提取出的特征碼和原特征碼一致,就說明rpm包中的數(shù)據(jù)沒有被改動過,從而保證了rpm包的數(shù)據(jù)完整性導(dǎo)入包制作者的公鑰,這里使用的是centos7的公鑰位置
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
導(dǎo)入完成后,我們可以查看密鑰的具體軟件名稱和它的基本信息
[root@node01 conf]# rpm -qa |grep pubkey
gpg-pubkey-352c64e5-52ae6884
我們在安裝rpm包時,會自動執(zhí)行驗證簽名,我們也可以手動驗證
[root@node01 ~]# rpm -K epel-release-latest-7.noarch.rpm
epel-release-latest-7.noarch.rpm: rsa sha1 (md5) pgp md5 確定
3鹉梨、yum的配置和使用總結(jié)以及yum私有倉庫的創(chuàng)建。
YUM (Yellowdog Update Modifier) 程序包管理器的前端工具穿稳,是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器存皂。基於RPM包管理逢艘,能夠從指定的服務(wù)器自動下載RPM包并且安裝旦袋,可以自動處理依賴性關(guān)系,并且一次安裝所有依賴的軟體包它改。
-
yum客戶端安裝軟件等操作實現(xiàn)原理
YUM工作原理圖- 配置文件:指定各可用的yum倉庫;
- 緩存元數(shù)據(jù):yum會到各可用yum倉庫獲取元數(shù)據(jù)疤孕,并緩存至本地;
- 分析元數(shù)據(jù):根據(jù)具體操作請求完成元數(shù)據(jù)分析, 可能包括檢查依賴關(guān)系、文件列表等信息央拖;
- 執(zhí)行具體操作
- 服務(wù)端
將所有需要用到的rpm包存放于某個目錄之下祭阀,該目錄可以是遠程的(采用ftp和http協(xié)議)截亦,也可以是本地的(采用file協(xié)議)。目錄建立好了之后柬讨,使用createrpo命令來提取目錄下所有[rpm]包的元數(shù)據(jù)和依賴關(guān)系,生成一些xml格式的文件袍啡,這些文件會存放在repodata目錄下踩官,至此,服務(wù)器端的repository就建立好了境输。注意repodata所在的位置蔗牡,就是yum倉庫的位置。
服務(wù)端提供如下是主要的文件服務(wù)
文件服務(wù)器:
ftp://
http://
nfs://
file:// - 客戶端
客戶端的配置非常簡單嗅剖,只需要使用yum及其子命令install辩越、reinstall或remove即可。不過使用yum及其子命令之前信粮,需要編輯配置文件黔攒,以告知yum命令倉庫repository在什么地方。這個配置文件為:/etc/yum.conf强缘。此外/etc/yum.repos.d/*.repo
都被視為/etc/yum/conf的組成部分督惰。
客戶端配置文件:
/etc/yum.conf:為所有倉庫提供公共配置
[main]
cachedir=/var/cache/yum/$basearch/$releasever # 緩存文件路徑
keepcache=0 #緩存到本地的文件是否保存
debuglevel=2 # 調(diào)試級別
logfile=/var/log/yum.log # 安裝的日志文件
exactarch=1 # 精確嚴格的平臺release匹配
obsoletes=1
gpgcheck=1 #檢測來源合法性和完整性
plugins=1
installonly_limit=5 #同時安裝多少程序包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release #當前發(fā)行版版本號從哪兒獲取
/etc/yum.repos.d/*.repo 為指定倉庫提供配置
[repositoryid] #倉庫ID,唯一標識別旅掂,不能重復(fù)
name=Some name for this repository #完整的倉庫名稱
baseurl=url://server1/path/to/repository/ # yum倉庫指明的訪問路徑
url://server2/path/to/repository/
url://server3/path/to/repository/
enabled={1|0} 默認為1 #是否啟用此yum倉庫赏胚,默認啟用
gpgcheck={1|0} #是否檢查完整性和來源合法性
gpgkey=URL #秘鑰文件位置,可能是對方倉庫提供
enablegroups={1|0} 默認為1 #是否基于組來批量管理程序包商虐,默認支持
failovermethod={roundrobin|priority} #故障轉(zhuǎn)移方法:輪詢觉阅、根據(jù)優(yōu)先級選擇; 默認roundrobin隨機
cost=默認為1000 #設(shè)置開銷秘车,默認為1000
yum的repo配置文件中可用的變量
$releasever: 當前OS的發(fā)行版的主版本號
$arch: 平臺
$basearch: 基礎(chǔ)平臺
$YUM0-$YUM9
yum常用操作命令
yum repolist 顯示倉庫列表
yum list 顯示程序包
yum search 模糊查找程序包
yum install 安裝程序包
yum remove 卸載程序包
yum update [package1] [package2] [...] 升級操作
yum downgrade package1 [package2] [...] 降級操作
yum info [package1] [package2] [...] 查看程序包簡要信息
yum provides | whatprovides feature1 [feature2] [...] 查看指定的特性(可以是某文件)是由哪個程序包所提供
yum clean <packages | metadata | expire-cache | rpmdb | plugins | all > 清理本地緩存-
創(chuàng)建私有倉庫
- 本地光盤鏡像
掛載光盤鏡像: [root@node01 yum.repos.d]# mount /dev/cdrom /media mount: /dev/sr0 寫保護典勇,將以只讀方式掛載 創(chuàng)建光盤鏡像配置文件: [root@node01 media]# cd /etc/yum.repos.d/ [root@node01 yum.repos.d]# vim CentOS-Media.repo [c7-media] name=CentOS-$releasever - Media baseurl=file:///media gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 驗證: [root@node01 yum.repos.d]# yum repolist |grep Media c7-media CentOS-7 - Media 425 [root@node01 yum.repos.d]#
-
同步網(wǎng)絡(luò)私有yum倉庫
思路,通過同步國內(nèi)的私有倉庫地址鲫尊,更新私有倉庫痴柔,公司內(nèi)網(wǎng)用戶只需要訪問私有倉庫,無需直接上網(wǎng)疫向,降低帶寬成本咳蔚,同時提高安裝效率。- 1搔驼、安裝 nginx谈火、yum-utils、createrepo 服務(wù)舌涨。nginx提供web服務(wù)提供客戶端訪問糯耍,yum-utils,createrepo安裝倉庫管理工具
[root@node2 yumdata]# yum -y install nginx yum-utils createrepo
- 2、創(chuàng)建倉庫目錄
[root@node2 /]# mkdir -p /yumdata/{centos/{6,7},epel}
- 3温技、修改/etc/yum.repos.d/CentOS-Base.repo
[root@node2 /]# vim /etc/yum.repos.d/CentOS-Base.repo ## centos7 [base7] name=CentOS-7-os-cmiot.local baseurl=http://mirrors.163.com/centos/7/os/x86_64/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7 [updates7] name=CentOS-7-updates-cmiot.local baseurl=http://mirrors.163.com/centos/7/updates/x86_64/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7 [extras7] name=CentOS-7-extras-cmiot.local baseurl=http://mirrors.163.com/centos/7/extras/x86_64/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7 ## centos6 [base6] name=CentOS-6-os-cmiot.local baseurl=http://mirrors.163.com/centos/6/os/x86_64/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 [updates6] name=CentOS-6-updates-cmiot.local baseurl=http://mirrors.163.com/centos/6/updates/x86_64/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 [extras6] name=CentOS-6-extras-cmiot.local baseurl=http://mirrors.163.com/centos/6/extras/x86_64/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 ## epel [epel6] name=CentOS-6-epel-cmiot.local baseurl=https://mirrors.aliyun.com/epel/6/x86_64/ gpgcheck=0 [epel7] name=CentOS-7-epel-cmiot.local baseurl=https://mirrors.aliyun.com/epel/7/x86_64/ gpgcheck=0
- 4革为、使用yum repolist驗證CentOS-Base.repo文件是否生效
[root@node2 yumdata]# yum repolist
- 5、同步文件
[root@node2 yumdata]# reposync -n --repoid=extras6 --repoid=updates6 --repoid=base6 -p /yumdata/centos/6 [root@node2 yumdata]# reposync -n --repoid=extras7 --repoid=updates7 --repoid=base7 -p /yumdata/centos/7 [root@node2 yumdata]# reposync -n --repoid=epel6 -p /yumdata/epel [root@node2 yumdata]# reposync -n --repoid=epel7 -p /yumdata/epel
- 6舵鳞、createrepo 命令創(chuàng)建yum源
格式:createrepo -po 源目錄 索引元數(shù)據(jù)的輸出位置目錄 [root@node2 yumdata]# createrepo -po /yumdata/centos/6/base6/ /yumdata/centos/6/base6/ [root@node2 yumdata]# createrepo -po /yumdata/centos/6/updates6/ /yumdata/centos/6/updates6/ [root@node2 yumdata]# createrepo -po /yumdata/centos/6/extras6/ /yumdata/centos/6/extras6/ [root@node2 yumdata]# createrepo -po /yumdata/epel/epel6/ /yumdata/epel/epel6/ [root@node2 yumdata]# createrepo -po /yumdata/centos/7/base7/ /yumdata/centos/7/base7/ [root@node2 yumdata]# createrepo -po /yumdata/centos/7/updates7/ /yumdata/centos/7/updates7/ [root@node2 yumdata]# createrepo -po /yumdata/centos/7/extras7/ /yumdata/centos/7/extras7/ [root@node2 yumdata]# createrepo -po /yumdata/epel/epel7/ /yumdata/epel/epel7/
- 7震檩、配置web服務(wù),修改nginx配置文件
[root@node2 yumdata]# vim /etc/nginx/nginx.conf server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /yumdata; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { autoindex on; autoindex_exact_size off; autoindex_localtime on; } }
- 8蜓堕、啟動nginx服務(wù)
[root@node2 ~]# systemctl start nginx [root@node2 ~]# systemctl enable nginx
-
9抛虏、瀏覽器驗證
yum服務(wù)器web頁面 10、同步腳本編寫
[root@node2 ~]# vim updata.sh #!/bin/bash # echo 開始同步centos6 reposync -n --repoid=extras6 --repoid=updates6 --repoid=base6 -p /yumdata/centos/6 reposync -n --repoid=epel6 -p /yumdata/epel/ echo centos6同步結(jié)束 echo 開始同步centos7 reposync -n --repoid=extras7 --repoid=updates7 --repoid=base7 -p /yumdata/centos/7 reposync -n --repoid=epel7 -p /yumdata/epel/ echo centos7同步結(jié)束 #更新元數(shù)據(jù) createrepo --update /yumdata/centos/6/base6/ createrepo --update /yumdata/centos/6/updates6/ createrepo --update /yumdata/centos/6/extras6/ createrepo --update /yumdata/epel/epel6/ createrepo --update /yumdata/centos/7/base7/ createrepo --update /yumdata/centos/7/updates7/ createrepo --update /yumdata/centos/7/extras7/ createrepo --update /yumdata/epel/epel7/ echo "$(date +"%Y-%m-%d-%H") 同步完成"
- 設(shè)置定時任務(wù)
[root@node2 ~]# crontab -e 0 0 * * * sh updata.sh &> /tmp/yum.log
- 1搔驼、安裝 nginx谈火、yum-utils、createrepo 服務(wù)舌涨。nginx提供web服務(wù)提供客戶端訪問糯耍,yum-utils,createrepo安裝倉庫管理工具
4套才、寫一個腳本實現(xiàn)列出以下菜單給用戶:
(1)disk:show disk info信息
(2)mem: show memory info信息
(3)cpu: show cpu info信息
(*)quit
思路迂猴,寫一個循環(huán),1-3分別代表disk背伴、mem沸毁、cpu等信息
4表示退出,只有選擇4時腳本才會結(jié)束循環(huán)退出
當現(xiàn)在1-3中任何一個數(shù)字時打印info信息后挂据,并繼續(xù)循環(huán)
[root@node01 ~]# vim dis_info.sh
#!/bin/bash
#
while true
do
cat << END
===========================
1 > display disks info
2 > display memory info
3 > show cpu info
4 > quit
---------------------------
END
read -p "Your choice: " option
case $option in
1)
fdisk -l /dev/sd[a-z];;
2)
cat /proc/meminfo;;
3)
lscpu;;
4)
exit 1;;
*)
echo " Useage [1-4]";;
esac
done
腳本演示
[root@node01 ~]# sh dis_info.sh
===========================
1 > display disks info
2 > display memory info
3 > show cpu info
4 > quit
---------------------------
Your choice: x
Useage [1-4]
===========================
1 > display disks info
2 > display memory info
3 > show cpu info
4 > quit
---------------------------
Your choice: 2
total used free shared buff/cache available
Mem: 3791 148 1221 16 2420 3322
Swap: 6015 0 6015
===========================
1 > display disks info
2 > display memory info
3 > show cpu info
4 > quit
---------------------------
Your choice:
5以清、sed用法總結(jié)并結(jié)合實例演示
sed :Stream EDitor ,流編輯器崎逃,行操作
格式:sed [OPTION]...'script' [input-file]...
script表示地址定界編輯命令
- 常用選項:
-n:不輸出模式空間中的內(nèi)容至屏幕 -e script掷倔,--expression=script: 多點編輯 -f /path/somefile : 每行一個編輯命令 -r :支持使用擴展正則表達式 -i :直接編輯原文件
- 地址定界:
- 1、空地址:對全文進行處理
- 2个绍、單地址
n:指定n行
/pattern/:被此模式所匹配到的每一行 - 3勒葱、地址范圍
n,m:n~m行
n巴柿,+m:n~n+m行
n凛虽,/parttern/
/parttern1/,/parttern2/
$,最后一行
4、步進:~
1~2:所有奇數(shù)行
2~2:所有偶數(shù)行 - 編輯命令:
d:刪除
p:顯示模式空間中的內(nèi)容
a \text :在行后面追加文本“text”广恢,支持使用\n實現(xiàn)多行追加
i \text:在行前面追加文本“text”凯旋,支持使用\n實現(xiàn)多行追加
c \text:把匹配到的行替換為此處指定的文本“text”
w /path/somefile:保存模式空間匹配到的行至指定的文本中
r /path/from/somefile:讀取指定文件的內(nèi)容至當前文件被匹配到的行后面;文件合并
=:為模式匹配到的行打印行號
6っ浴:條件取反
s///:查找替換至非,其分隔符可自行指定,常用的有s@@@ ,s###
??替換標記:
????g:全局替換
????w /path/somefile:將替換成功的結(jié)果保存至指定的文本中
????p:顯示替換成功的行 - 演示示例
1糠聪、刪除/boot/grub/grub2.cfg文件中所有以空白字符開頭的行的行首的所有空白字符 sed 's@[[:space:]]\+@@' /etc/grub2.cfg 2荒椭、刪除/etc/fstab文件中所有以#開頭的行的行首的#號及#號后面所有的空白字符 sed 's@^#[[:space:]]*@@' /etc/fstab 3、輸出一個絕對路徑個sed命令舰蟆,取出其目錄趣惠,其行為類似于dirname echo "/var/log/message/" |sed 's@[^/]\+/\?$@@' echo "/var/log/message/" |sed -r 's@[^/]+/?$@@'
6狸棍、 用bash實現(xiàn)統(tǒng)計訪問日志文件中狀態(tài)碼大于等于400的IP數(shù)量并排序
思路:以nginx日志為例,根據(jù)定義的日志格式味悄,先找每行中的IP和狀態(tài)碼對應(yīng)關(guān)系草戈,
并且只有IP和狀態(tài)碼信息,然后根據(jù)狀態(tài)碼做錨定[4|5][0-9][0-9]侍瑟,然后根據(jù)IP進行排序猾瘸,去重,再按照出現(xiàn)次數(shù)進行排序
awk -F ' ' '{ print $1,$9 }' /var/log/nginx/access.log |grep '\<[4|5][0-9][0-9]\>' |sort -n |uniq -c |sort -n
演示效果:
[root@node2 ~]# awk -F ' ' '{ print $1,$9 }' /var/log/nginx/access.log |grep '\<[4|5][0-9][0-9]\>' |sort -n |uniq -c |sort -nr
16 10.192.52.63 403
8 10.192.52.63 404
1 10.192.2.222 404
1 10.192.1.163 404
[root@node2 ~]#
7丢习、 使用自制的yum源安裝ftp、openssh淮悼、curl咐低、wget、tcpdump等軟件包
先前已經(jīng)搭建了一個私有倉庫袜腥,我們利用先前搭建的倉庫進行安裝
- 1见擦、下載repo配置文件
[root@node01 yum.repos.d]# wget http://10.192.1.164/CentOS7-Base.repo
- 2、查看倉庫列表
[root@node01 yum.repos.d]# yum repolist
- 3羹令、安裝
[root@node01 yum.repos.d]# yum -y install ftp openssh curl wget tcpdump
已安裝: ftp.x86_64 0:0.17-67.el7 tcpdump.x86_64 14:4.9.2-3.el7 更新完畢: curl.x86_64 0:7.29.0-51.el7 openssh.x86_64 0:7.4p1-16.el7 作為依賴被升級: libcurl.x86_64 0:7.29.0-51.el7 nspr.x86_64 0:4.19.0-1.el7_5 nss.x86_64 0:3.36.0-7.el7_5 nss-pem.x86_64 0:1.0.3-5.el7 nss-softokn.x86_64 0:3.36.0-5.el7_5 nss-softokn-freebl.x86_64 0:3.36.0-5.el7_5 nss-sysinit.x86_64 0:3.36.0-7.el7_5 nss-tools.x86_64 0:3.36.0-7.el7_5 nss-util.x86_64 0:3.36.0-1.el7_5 openssh-clients.x86_64 0:7.4p1-16.el7 openssh-server.x86_64 0:7.4p1-16.el7 完畢鲤屡! [root@node01 yum.repos.d]#