一、簡述systemd的新特性及unit常見類型分析,可以實現編譯安裝的如nginx\apache實現經過systemd來管理
Systemd的新特性:nginx
系統引導時實現服務並行啓動; 按需激活進程; 系統狀態快照; 基於依賴關係定義服務控制邏輯;
核心概念:unitexpress
unit由其相關的配置文件進行標識、識別和配置;文件中主要包含了系統服務、監聽的socket、保存的快照以及其餘與init相關的信息; /usr/lib/system /run/systemd/system /etc/systemd/system
unit的常見類型:apache
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/
不兼容:socket
systemctl的命令是固定不變的; 非有systemctl啓動的服務,systemctl沒法與之通訊;
nginx安裝: ide
[root@silasszl ~]# wget http://nginx.org/download/nginx-1.13.12.tar.gz [root@silasszl ~]# tar -vzxf nginx-1.13.12.tar.gz -C /usr/local [root@silasszl ~]# cd /usr/local/nginx-1.13.12/ [root@silasszl nginx-1.13.12]# ./configure [root@silasszl nginx-1.13.12]# make && make install
配置nginx:
函數
nginx啓動、關閉、中止和狀態查看:工具
[root@silasszl ~]# systemctl start nginx.service [root@silasszl ~]# systemctl restart nginx.service [root@silasszl ~]# systemctl stop nginx.service [root@silasszl ~]# systemctl status nginx.service
二、描述awk命令用法及示例(至少3例)
文本三劍客之awk
awk是一種報表生成器,與sed,grep都是文本處理工具,能夠將編輯的文本進行格式化排版處理後以更加美觀的形式輸出。命令行
基本用法:awk [options] 'program' FILE ... program: PATTERN{ACTION STATEMENTS} 語句之間用分號分隔 選項: -F:指明輸入時用到的字段分隔符; -v var=value: 自定義變量
print3d
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{}:僅在文本處理完成以後執行一次;
示例:
三、描述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) { … }
示例: