1. 程式人生 > >Linux的systemd特性及awk使用

Linux的systemd特性及awk使用

1、簡述systemd的新特性及unit常見型別分析,能夠實現編譯安裝的如nginx\apache實現通過systemd來管理
Systemd的新特性:

系統引導時實現服務並行啟動;
        按需啟用程序;
        系統狀態快照;
        基於依賴關係定義服務控制邏輯;

核心概念:unit

unit由其相關的配置檔案進行標識、識別和配置;檔案中主要包含了系統服務、監聽的socket、儲存的快照以及其他與init相關的資訊;
        /usr/lib/system
        /run/systemd/system
        /etc/systemd/system

unit的常見型別:

Service unit:副檔名為.service,用於定義系統服務;
Target unit:檔案擴充套件為.target,用於模擬實現“執行級別”;
Device unit: .device,用於定義核心識別的裝置;
Mount unit: .mount,定義檔案系統掛載點;
Socket unit: .socket,用於標識程序間通訊用到的socket檔案;
Snapshot unit: .snapshot, 管理系統快照;
Swap unit: .swap, 用於標識swap裝置;
Automount unit: .automount,檔案系統自動點裝置;
Path unit: .path, 用於定義檔案系統中的一檔案或目錄;

關鍵特性:

基於socket的啟用機制;socket與程式分離;
基於bus的啟用機制;
基於device的啟用機制;
基於Path的啟用機制;
系統快照:儲存各unit的當前狀態資訊於持久儲存裝置中;
向後相容sysv init指令碼;
        /etc/init.d/

不相容:

systemctl的命令是固定不變的;
非有systemctl啟動的服務,systemctl無法與之通訊;

nginx安裝:

[[email protected] ~]# wget http://nginx.org/download/nginx-1.13.12.tar.gz
[[email protected]
~]# tar -vzxf nginx-1.13.12.tar.gz -C /usr/local [[email protected] ~]# cd /usr/local/nginx-1.13.12/ [[email protected] nginx-1.13.12]# ./configure [[email protected] nginx-1.13.12]# make && make install

配置nginx:
Linux的systemd特性及awk使用

nginx啟動、關閉、停止和狀態檢視:

[[email protected] ~]# systemctl start nginx.service
[[email protected] ~]# systemctl restart nginx.service
[[email protected] ~]# systemctl stop nginx.service
[[email protected] ~]# systemctl status nginx.service

Linux的systemd特性及awk使用


2、描述awk命令用法及示例(至少3例)
文字三劍客之awk
awk是一種報表生成器,與sed,grep都是文字處理工具,可以將編輯的文字進行格式化排版處理後以更加美觀的形式輸出。

基本用法:awk [options] 'program' FILE ...
                                    program: PATTERN{ACTION STATEMENTS}
語句之間用分號分隔
選項:
-F:指明輸入時用到的欄位分隔符;
-v var=value: 自定義變數

print

print item1, item2, ...
要點:
(1) 逗號分隔符;
(2) 輸出的各item可以字串,也可以是數值;當前記錄的欄位、變數或awk的表示式;
(3) 如省略item,相當於print $0;

變數

1) 內建變數
      FS:input field seperator,預設為空白字元;
      OFS:output field seperator,預設為空白字元;
      RS:input record seperator,輸入時的換行符;
      ORS:output record seperator,輸出時的換行符;
      NF:number of field,欄位數量
            {print NF}, {print $NF}
      NR:number of record, 行數;
      FNR:各檔案分別計數;行數;
      FILENAME:當前檔名;
      ARGC:命令列引數的個數;
      ARGV:陣列,儲存的是命令列所給定的各引數;

2)自定義變數
        (1) -v var=value
            變數名區分字元大小寫;
        (2) 在program中直接定義

示例:
Linux的systemd特性及awk使用
Linux的systemd特性及awk使用
printf命令

格式化輸出:printf FORMAT, item1, item2, ...
            (1) FORMAT必須給出; 
    (2) 不會自動換行,需要顯式給出換行控制符,\n
    (3) FORMAT中需要分別為後面的每個item指定一個格式化符號;
格式符:
    %c: 顯示字元的ASCII碼;
      %d, %i: 顯示十進位制整數;
                %e, %E: 科學計數法數值顯示;
                %f:顯示為浮點數;
                %g, %G:以科學計數法或浮點形式顯示數值;
                %s:顯示字串;
                %u:無符號整數;
                %%: 顯示%自身;
修飾符:
                #[.#]:第一個數字控制顯示的寬度;第二個#表示小數點後的精度;
                -: 左對齊
                +:顯示數值的符號

操作符

算術操作符:x+y,x-y,x*y,x/y,x^y,x%y
    -x
    +x: 轉換為數值;
字串操作符:沒有符號的操作符,字串連線
賦值操作符:=,+=,-=,*=,/=,%=,^=,++,--
比較操作符:>,>=,<,<=,!=,==
模式匹配符:
    ~:是否匹配
    !~:是否不匹配
邏輯操作符:&&,||,!
函式呼叫:
    function_name(argu1, argu2, ...)
條件表示式:
    selector?if-true-expression:if-false-expression

PATTERN

(1) empty:空模式,匹配每一行;
(2) /regular expression/:僅處理能夠被此處的模式匹配到的行;
(3) relational expression: 關係表示式;結果有“真”有“假”;結果為“真”才會被處理;
         真:結果為非0值,非空字串;
(4) line ranges:行範圍,
   startline,endline:/pat1/,/pat2/
注意: 不支援直接給出數字的格式
        ~]# awk -F: '(NR>=2&&NR<=10){print $1}' /etc/passwd
(5) BEGIN/END模式
   BEGIN{}: 僅在開始處理檔案中的文字之前執行一次;
   END{}:僅在文字處理完成之後執行一次;

示例:
Linux的systemd特性及awk使用
Linux的systemd特性及awk使用


3、描述awk函式示例(至少3例)
awk函式:

函式分為內建函式和使用者自定義函式

內建函式:

數值處理:
        rand():返回0和1之間一個隨機數;
字串處理:
        length([s]):返回指定的字串長度;
        sub(r,s[,t]):基於r所表示的模式來匹配字串的t中的內容,將其第一次被匹配到內容替換為s所表示的字串
        gsub(r,s[,t]):基於r所表示的模式來匹配字串t中的內容,將其所有被匹配到的內容均替換為s所表示的字串;
        split(r,s[,t]):以r為分隔符去切割字串s,並將切割後的結果儲存至s表示的陣列中;
注意:awk的陣列下標從1開始編號,而非0.
        #awk ‘{split($0,userinfo,”:””);print userinfo[1]}’/etc/passwd
        substr(s,i[,n]):從s所表示的字串中取子串,取法:從i表示的位置開始,取n個 
        符;時間類函式:systime(),取當前系統實際按,結果形式為時間戳;

使用者自定義函式:

function f_name(p,q) {
        …
}

示例:
Linux的systemd特性及awk使用
Linux的systemd特性及awk使用