systemd及awk

1、簡述systemd的新特性及unit常見類型分析,能夠實現編譯安裝的如nginx\apache實現通過systemd來管理
2、描述awk命令用法及示例(至少3例)
3、描述awk函數示例(至少3例)

1、簡述systemd的新特性及unit常見類型分析,能夠實現編譯安裝的如nginx\apache實現通過systemd來管理
  • Systemd的新特性:
    系統引導時實現服務并行啟動;
    按需激活進程;
    系統狀態快照;
    基于依賴關系定義服務控制邏輯;
  • 核心概念:unit(單元)
    unit由其相關配置文件進行標識、識別和配置;文件中主要包含了系統服務、監聽的socket、保存的快照以及其它與init相關的信息; 這些配置文件主要保存在:
    /usr/lib/systemd/system
    /run/systemd/system
  • unit的常見類型:
    Service unit:文件擴展名為.service,用于定義系統服務;
    Target unit:文件擴展為.target,用于模擬實現“運行級別”;
    //centos7沒有啟動級別,只有被訪問時才啟動
    Device unit:文件擴展名為 .device,用于定義內核識別的設備;
    Mount unit:文件擴展名為 .mount,定義文件系統掛載點;
    Socket unit: 文件擴展名為 .socket,用于標識進程間通信用到的socket文件;
    Snapshot unit:文件擴展名為 .snapshot, 管理系統快照;
    Swap unit:文件擴展名為 .swap, 用于標識swap設備;
    Automount unit:文件擴展名為 .automount,文件系統自動掛載點設備;
    Path unit:文件擴展名為 .path, 用于定義文件系統中的文件或目錄;
    /etc/systemd/system
  • 關鍵特性:
    基于socket的激活機制:socket與程序分離;
    基于bus(總線)的激活機制;
    基于device的激活機制;
    基于Path的激活機制;
    系統快照:保存各unit的當前狀態信息于持久存儲設備中;
    向后兼容sysv init腳本;
  • 不兼容:
    systemctl的命令是固定不變的;
    非由systemd啟動的服務,systemctl無法與之通信;
    /etc/init.d/
    管理系統服務:
    CentOS 7: service類型的unit文件;
  • 編譯安裝Nginx
    1、安裝軟件
    yum install zlib-devel pcre-devel
    yum groupinstall "開發工具"
    tar nginx-1.12.2.tar.gz
    cd nginx-1.12.2
    ./configure --with-pcre --with-zlib
    2、啟動、重啟和關閉
    /usr/local/nginx/sbin/nginx //啟動
    /usr/local/nginx/sbin/nginx -s reload //重啟
    /usr/local/nginx/sbin/nginx -s stop //關閉
    3、實現systemd管理nginx
    vim /usr/lib/systemd/system/nginx.service
    [Unit]
    Description=Nginx Service
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s stop

    //這里一定要注意PIDFile的路徑,在/usr/local/nginx/conf/nginx.conf配置文件中,默認pid文件放在/usr/local/nginx/logs中,如果寫錯路徑,nginx是無法啟動的,報錯為:PID file /run/nginx.pid not readable (yet?) after start.
2、描述awk命令用法及示例(至少3例)
  • 簡介
    awk是一個強大的文本分析工具,相對于grep的查找,sed的編輯,awk在其對數據分析并生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理。
  • 使用方法
    awk [options] 'script' file1,file2, ...

    指定選項,指定報告格式化后的腳本,最后指定文件內容的來源;這表示它可以從多個文件中讀取文本信息,之后根據所指定的腳本,將其格式化為特定格式,最后顯示出來;腳本的格式一般分為兩部分組成,如下:
    awk [options] 'PATTERN {action}' file1,file2,...

    腳本主要由PATTERN和action組成,PATTERN叫模式,這意味著它并不是對文件中的每一行都進行處理,而僅是處理那些能夠被模式匹配到的行。行匹配到以后就action,也就是做出相應處理,一般最常見的處理機制是打印出來。常用的打印命令有print和printf,print就是簡單地打印格式,printf可以自定義顯示格式,如顯示的寬度,顯示為字符串還是數值等。
  • awk的基本處理機制
    一次從文件中讀取一行文本,awk會對其自動進行切片,將每一行按字符串的分隔符進行切割。如這一行是this is a test,它會默認使用空白字符當分隔符,不管空了幾個格,這樣這一行就會成四片,一片中保存一個單詞,而這四片在awk中可以使用一個變量來引用,這個變量相關于腳本中的位置參數$1,$2...$0表示這一整行。awk默認使用空白當分隔符,也可以指定分隔符。
  • 試驗
    1、vim awk.txt
    this is a test

    2、awk '{print $1}' awk.txt
    //顯示第一個字段
    awk '{print $0}' awk.txt
    awk '{print $4}' awk.txt
    awk '{print $1,$2}' awk.txt
    //顯示兩段內容時用逗號分隔

指定分隔符的選項用-F,如-F:,表示以冒號為分隔符。另外還可指定輸出分隔符,如下:
awk 'BEGIN{OFS="#"}{print $1,$2}' awk.txt
print的使用
print的使用格式
print item1,item2,...
如果想在中間插入文本可按下面方法,在要插入的位置用雙引號引起要顯示的內容即可
print item1,"***",item2,...


  • awk 'BEGIN {print "line one\nline two\nline three"}'
    //打印三行文本,\n表示換行

awk -F: '{print $1,$2}' /etc/passwd
//以冒號為分隔符,打印passwd的第一和第二段

  • awk變量
    常用內置變量之記錄變量
    FS:field separator,讀取文本時,所使用的字段分隔符
    RS: Record separator,輸入文本信息所使用的換行符
    OFS:Output Filed Separator,輸出字段分隔符
    ORS:Output Row Separator,輸出行分隔符
  • awk內置變量之數據變量
    NR:The number of input records,awk命令所處理的記錄數。相對于當前的文件,它處理到多少行了。如果有多個文件,這個數目會把處理的多個文件中統一計數。
    NF:Number of field,當前記錄的field個數,統計正在處理的當前行有多少字段
    FNR:與NR不同的是,FNR用于記錄正處理的行是當前這一文件中被總共處理的行數
    ARGV:數組
    ARGC:awk命令的參數的個數
    FILENAME:awk命令所處理的文件的名稱
    ENVIRON:當前shell環境變量及其值的關聯數組

  • awk '{print NF}' awk.txt
    //顯示一共有幾個字段awk '{print $NF}' awk.txt
    //顯示第四個字段

    awk '{print NR}' awk.txt
    //NR是絕對計數,顯示行號

    awk '{print NR}' awk.txt /etc/passwd
    //將兩個文件的行號在一起顯示

    awk '{print FNR}' awk /etc/passwd
    //FNR是各自計數,將兩個文件的行號分開顯示

  • 用戶自定義變量
    gawk允許用戶自定義自己的變量以便在程序代碼中使用,變量名命名規則與大多數編程語言相同,只能使用字母、數字和下劃線,且不能以數字 開頭。gawk變量名稱區分字符大小寫;要定義變量,只要在BEGIN模式中加入變量名等于變量值即可或在命令行中用-v選項定義變量

  • awk 'BEGIN{var="variable testing";print var}'
    awk -v test="hello awk" 'BEGIN{print test}'

    //在awk中打印變量值是不用加$$的,加$符是打印字段。后面不帶文件,只是做一個簡單的演示的時候常用BEGIN。另外,在{}中定義變量時,系統會識別為兩個語句,要用分號隔開。
  • printf 命令的使用格式
    printf format, item1,item2,...
  • 要點:
    1、與print命令的最大不同是,print需要指定format
    2、format用于指定后面的每個item的輸出格式
    3、printf語句不會自動打印行符,如果需要換行,要加上\n
  • format格式的指示符都以%開頭,后面跟一個字符,如下
    %c:顯示字符的ASCII碼
    %d, %i:十進制整數
    %e, %E:科學計數法顯示數值
    %f:顯示浮點數
    %g,%G:以科學計數法的格式或浮點數的格式顯示數值
    %s:顯示字符串
    %u:無符號整數
    %%:顯示%本身
  • 修飾符
    N:顯示寬度
    -:左對齊,不用-時是右對齊
    +:顯示數值符號

  • awk -F: '{printf "%-15s, %-10s\n",$1 $3}' /etc/passwd
    //顯示$1和$3時,$1左對齊顯示15個字符串,沒有內容就顯示空白,顯示$3時用10個字符,換行顯示。這里還會顯示一個逗號,這是-15s后面的逗號awk -F: '{printf "%-5d\n",$3}' /etc/passwd
    //以十進制顯示每個用戶的id號,左對齊
3、描述awk函數示例(至少3例)
  • 可用函數rand()

示例:
awk 'BEGIN{print rand()}'
//使用rand()函數只能隨機產生一個數字,這個數字是不會變的

awk 'BEGIN{srand();print rand()}'
//配合使用srand()函數,才成生成一個大于0小于1的隨機數。

awk 'BEGIN{srand();print int(100*rand())}'
//生成一個小于100的隨機整數。使用srand()與rand()乘以100可以得到一個隨機的整數隨機數,用int是為了截取整數部分,如果沒有int,生成的數字會有小數部分。

  • 字符串函數
    用gsub或sub函數替換某些文本
    vim test.txt
    Allen Phillips
    Green Lee
    William Ken Allen

awk '{gsub("l","L",$1);print $0}' test.txt
//用gsub函數將小寫l替換成大寫L,但是替換范圍只限于第一列

awk '{gsub("[a-z]","6",$1);print $0}' test.txt
//將第一段中的小寫字母替換為6,并顯示全部`

awk '{sub("l","L",$1);print $0}' test.txt
//sub只會替換指定范圍內第一次匹配到的符合條件的字符,也就是第一段中的第一個小寫l

1,$2}' awk.txt
//顯示兩段內容時用逗號分隔

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91188

(1)
ruopu1989ruopu1989
上一篇 2018-01-17 21:59
下一篇 2018-01-18 14:26

相關推薦

  • LVS產生背景、原理及LVS-DR應用實例(二)

    六、LVS-DR應用實例          (一)基本構建思路:           Director: 通過Director實現訪問調度到RS1,RS2,實現負載均衡,RS3負責動態分離?!?/p>

    Linux干貨 2016-10-29
  • 管理分區和文件系統及掛載設備

    管理分區 列出塊設備 lsblk       分區工具fdisk fdisk -l /dev/sdX 查看硬盤分區信息 CentOS7: fdisk -l /dev/sda 默認開啟dos及扇區顯示模式    開啟dos及柱面顯示模式:fdisk -c=dos -u=cylinders -l /dev/sda…

    2017-08-26
  • 第10周作業(上)

    第10周作業 1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)。CentOS系統啟動詳細的過程如下(以CentOS7為例): 加電自檢(POST)按下電源開關,BIOS系統隨即開始加電自檢,檢查CPU、內存、主板及各接口、硬盤、鍵盤、光驅等,檢測它們的好壞。 讀取啟動順序檢查完成后,BIOS會根據預先設定好的啟動順序去挨個尋找可引導…

    Linux干貨 2017-01-03
  • puppet代碼分析

    這篇博客的目的是通過分析Forge上的Puppet模塊來加深一些概念的理解,同時了解一些常用用法。 今天的例子是jfryman-nginx模塊,它是原puppetlabs-nginx模塊的升級版本,依賴3個Puppet公共模塊:puppetlabs-apt,puppetlabs-stdlib和puppetlabs-concat。安裝非常方便,puppet m…

    2017-03-18
  • LVM的創建與管理

    一、基本概念     1、LVM是邏輯盤卷管理(LogicalVolumeManager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。     2、why:通常在安裝Linux系統的時候對磁盤進行一盤的分區,一旦日后分區或整個磁盤的空間…

    Linux干貨 2016-06-22
  • 馬哥教育第一天

    來到馬哥教育第一天,初步接觸IT,第一次寫博客,不知道寫點啥,記幾個地址吧。

    2018-03-26

評論列表(1條)

  • 馬哥教育
    馬哥教育 2018-01-23 23:47

    贊,總結的比較詳細,不過awk的例子列舉的比較簡單,可以再深入一下~加油~

欧美性久久久久