Linux系統(tǒng)管理之定時任務(wù)批糟、包管理

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:說明子包的功能特性

  • 獲取程序包的途徑:

  • 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
      查詢示例:

 [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
      

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]# 
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市福侈,隨后出現(xiàn)的幾起案子酒来,更是在濱河造成了極大的恐慌,老刑警劉巖肪凛,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堰汉,死亡現(xiàn)場離奇詭異,居然都是意外死亡伟墙,警方通過查閱死者的電腦和手機翘鸭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來戳葵,“玉大人就乓,你說我怎么就攤上這事」八福” “怎么了生蚁?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長邻梆。 經(jīng)常有香客問我守伸,道長,這世上最難降的妖魔是什么浦妄? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任尼摹,我火速辦了婚禮见芹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蠢涝。我一直安慰自己玄呛,他們只是感情好,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布和二。 她就那樣靜靜地躺著徘铝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惯吕。 梳的紋絲不亂的頭發(fā)上惕它,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天,我揣著相機與錄音废登,去河邊找鬼淹魄。 笑死,一個胖子當著我的面吹牛堡距,可吹牛的內(nèi)容都是我干的甲锡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼羽戒,長吁一口氣:“原來是場噩夢啊……” “哼缤沦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起易稠,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤缸废,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后驶社,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呆奕,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年衬吆,在試婚紗的時候發(fā)現(xiàn)自己被綠了梁钾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡逊抡,死狀恐怖姆泻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情冒嫡,我是刑警寧澤拇勃,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站孝凌,受9級特大地震影響方咆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蟀架,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一瓣赂、第九天 我趴在偏房一處隱蔽的房頂上張望榆骚。 院中可真熱鬧,春花似錦煌集、人聲如沸妓肢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碉钠。三九已至,卻和暖如春卷拘,著一層夾襖步出監(jiān)牢的瞬間喊废,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工栗弟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留操禀,地道東北人。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓横腿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親斤寂。 傳聞我的和親對象是個殘疾皇子耿焊,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容

  • Linux程序包的管理需要依賴程序包管理工具,程序包管理工具可以實現(xiàn)程序的安裝遍搞、升級罗侯、卸載、查詢和校驗溪猿,等等相關(guān)操...
    Arroganter閱讀 902評論 0 2
  • Linux程序包的管理需要依賴程序包管理工具钩杰,程序包管理工具可以實現(xiàn)程序的安裝、升級诊县、卸載讲弄、查詢和校驗,等等相關(guān)操...
    piziyang12138閱讀 917評論 0 0
  • Linux程序包的管理需要依賴程序包管理工具依痊,程序包管理工具可以實現(xiàn)程序的安裝避除、升級、卸載胸嘁、查詢和校驗瓶摆,等等相關(guān)操...
    Dream_wdl閱讀 652評論 0 3
  • 背景: 閱讀新聞 12C CDB模式下RMAN備份與恢復(fù) [日期:2016-11-29] 來源:Linux社區(qū) 作...
    陽屯okyepd閱讀 3,445評論 0 7
  • 今天早上6點,媽媽就醒了性宏。起床第一件事情就是撿書包群井。昨天晚上是爸爸最后輔導(dǎo)。當心書包沒有撿齊全毫胜,周一物品不齊全书斜,影...
    方敏_ecdb閱讀 191評論 1 0