Linux的systemd特性及awk使用
阿新 • • 發佈:2018-11-24
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:
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
2、描述awk命令用法及示例(至少3例)
文字三劍客之awk
awk是一種報表生成器,與sed,grep都是文字處理工具,可以將編輯的文字進行格式化排版處理後以更加美觀的形式輸出。
基本用法:awk [options] 'program' FILE ...
program: PATTERN{ACTION STATEMENTS}
語句之間用分號分隔
選項:
-F:指明輸入時用到的欄位分隔符;
-v var=value: 自定義變數
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中直接定義
示例:
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{}:僅在文字處理完成之後執行一次;
示例:
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) {
…
}
示例: