簡述systemd的新特性及unit常見類型分析,能夠實現編譯安裝的如nginx\apache實現通過systemd來管理 系統引導的新特性 1. 系統引導時實現服務啟動; 2. 按需激活進程; 3. 系統狀態快照; 4. 基於依賴關係定義服務控制邏輯; 核心概念:unit(單元) 1. unit由 ...
簡述systemd的新特性及unit常見類型分析,能夠實現編譯安裝的如nginx\apache實現通過systemd來管理
- 系統引導的新特性
- 系統引導時實現服務啟動;
- 按需激活進程;
- 系統狀態快照;
- 基於依賴關係定義服務控制邏輯;
- 核心概念:unit(單元)
- unit由其相關配置文件進行標識、識別和配置;文件中主要包含了系統服務、監聽socket、保存的快照以及其他與init相關信息;這些配置文件主要保存在:
/usr/lib/systemd/system
/run/systemd/system
- unit由其相關配置文件進行標識、識別和配置;文件中主要包含了系統服務、監聽socket、保存的快照以及其他與init相關信息;這些配置文件主要保存在:
- 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/
管理系統服務:
Centos7:SErvice類型的unit文件; - 編譯安裝Nginx
安裝軟體
[root@localhost ~]yum install -y pcre [root@localhost ~]yum install -y pcre-devel [root@localhost ~]yum install -y openssl-devel [root@localhost ~]useradd nginx [root@localhost ~]passwd nginx [root@localhost ~]tar -vzxf nginx-1.11.3.tar.gz -C /usr/local [root@localhost ~]cd nginx-1.11.3/ [root@localhost nginx-1.11.3]# ./configure \ > --group=nginx \ > --user=nginx \ > --prefix=/usr/local/nginx \ > --sbin-path=/usr/sbin/nginx \ > --conf-path=/etc/nginx/nginx.conf \ > --error-log-path=/var/log/nginx/error.log \ > --http-log-path=/var/log/nginx/access.log \ > --http-client-body-temp-path=/tmp/nginx/client_body \ > --http-proxy-temp-path=/tmp/nginx/proxy \ > --http-fastcgi-temp-path=/tmp/nginx/fastcgi \ > --pid-path=/var/run/nginx.pid \ > --lock-path=/var/lock/nginx \ > --with-http_stub_status_module \ > --with-http_ssl_module \ > --with-http_gzip_static_module \ > --with-pcre [root@localhost nginx-1.11.3]# make &&make install
2.啟動、重啟、關閉
[root@localhost ~]/usr/local/nginx/sbin/nginx //啟動 [root@localhost ~]/usr/local/nginx/sbin -s reload //重啟 [root@localhost ~]/usr/local/nginx/sbin -s stop //關閉
3.實現systemd管理nginx
[root@localhost ~]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
描述awk命令用法及示例(至少3例)
- 簡介
awk是一個強大的文本分析工具,相當於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。awk就是把文件逐行讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。 使用方法
awk [options] 'scripts' file1,file2, ...
指定選項,指定報告格式化後的腳本,最後指定文件內容的來源;這表示它可以從多個文件中讀取文本信息,之後根據所指定的腳本,將其格式化為特定格式,最後顯示出來;腳本的格式一般分為兩部分組成,如下:
awk [options] 'PATTERN {action}' file1,file2,...
腳本主要由PATTERN和action組成,PATTERN叫模式,這就意味著它並不是對文件中的每一行都進行處理,而僅僅是處理那些能夠被模式匹配到的行。行匹配到以後就action,也就是做出相應處理,一般最常見的處理機制是列印出來。常用的列印命令有print和printf可以自定義顯示格式,如顯示的寬度,顯示為字元串還是數值等。
-awk基本處理機制
一次從文件讀取一行文本,awk會對其自動進行切片, 將每一行按字元串的分隔符進行切割。如這一行是this is test,它會預設使用空白字元放分隔符,不管空了幾格,這樣這一行就會分成四片,一片中保存一個單詞,而這四片在awk中可以使用一個變數來引用,這個變數相關於腳本中的位置參數;
$1,$2...$0
-測試
指定分隔符的選項用-F,如-F:,表示以冒號為分隔符。另外還可以指定輸出分隔符,如下:[root@qingcheng-app3 lgp]# vim awk.txt this is a test this[root@qingcheng-app3 lgp]# awk '{print $1,$2}' awk.txt this is [root@qingcheng-app3 lgp]# awk '{print $1}' awk.txt this [root@qingcheng-app3 lgp]# awk '{print $2}' awk.txt is
[root@qingcheng-app3 lgp]# awk '{OFS=":"}{print $1,$2}' awk.txt
this:is
print的使用格式
print item1,item2,...
如果想在中間插入文本可按下麵方法,在要插入的位置使用雙引號引起要顯示的內容即可:
[root@qingcheng-app3 lgp]# awk 'BEGIN {print "line one\nline two\nline three"}'
line one
line two
line three
//列印三行文本,\n表示換行
[root@qingcheng-app3 lgp]# awk -F: '{print $1,$2}' /etc/passwd
//以冒號為分隔符,列印passwd的第一段和第二段- awk變數
常用內置變數之記錄變數
FS:field separtor,讀取文本時,所使用的欄位分隔符
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不同的是,RNR用於記錄正處理的行是當前這一文件中被總共處理的行數
ARGV:數組
ARGC:awk命令參數的個數
FILENAME:awk命令所處理的文件的名稱
ENVIRON:當前shell環境變數及其值的關聯數組 示列
[root@qingcheng-app3 lgp]# awk '{print NF}' awk.txt
4
//顯示一共有幾個欄位
[root@qingcheng-app3 lgp]# awk '{print NR}' awk.txt
1
//NR是絕對計數u,顯示行號用戶自定義變數
gawk允許用戶自定義自己的變數以便在程式代碼中使用,變數名命名規則與大多數編程語言相同,只能使用字母、數字和下劃線,且不能以數字開頭。gawk變數名稱區分字元大小寫;要定義變數,只要在BEGIN模式中加入變數名等於變數值即可或在命令行中用-v選項定義變數
[root@qingcheng-app3 ~]# awk -v test="hello awk" 'BEGIN{print test}'
hello awk
[root@qingcheng-app3 ~]# awk 'BEGIN{var="variable testing";print var}'
variable testing
//在awk中列印變數值是不用加$$的,加$符是列印欄位。後面不帶文件,只是做一個簡單的演示的時候常用BEGIN。另外,在{}中定義變數時,系統會識別為兩個語句,要用分號隔開。printf命令的使用格式
printf format, item1,item2,...
要點:
a、與print命令的最大不同是,print需要指定format
b、format用戶指定後面每個item的輸出格式
c、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和$2時,$1左對齊顯示15個字元串,沒有內容就顯示空白,顯示$3時用10個字元,換行顯示。這裡還會顯示一個逗號,這裡是-15s後面的逗號
awk -F:'{printf "%-5d\n",$3}' /etc/passwd
//以十進位顯示每個用戶的ID號,做對齊
描述awk函數示例(至少3例)
- 可用函數rand()
示列:
awk 'BEGIN{print rand()}
//使用rand()函數只能隨機產生一個數字,這個數字是不會變的
awk 'BEGIN{strand();print rand()}' //配合使用strand()函數,才生成一個大於0小於1的隨機數
awk 'BEGIN{strand();print int(100*rand())}'
//生成一個小於100的隨機整數。使用strand()與rand()乘以100可以得到一個隨機的整數隨機數,用int是為了截取整數部分,如果沒有int,生成的數字會有小數部分。 - 字元串函數
用gsub或sub函數替換某些文本
[root@qingcheng-db ~]# vim test.txt
Allen phillips
Green Lee
William Lee
william ken Allen
[root@qingcheng-db ~]# awk '{gsub("l","L",$1);print $0}' test.txt
ALLen phillips
Green Lee
WiLLiam Lee
wiLLiam ken Allen
//用gsub函數將小寫l替換成大寫L,但是替換範圍只限於第一列
[root@qingcheng-db ~]# awk '{gsub("[a-z]","6",$1);print $0}' test.txt
A6666 phillips
G6666 Lee
W666666 Lee
6666666 ken Allen
//將第一段中的小寫字母替換為6,並顯示全部
[root@qingcheng-db ~]# awk '{sub("l","L",$1);print $0}' test.txt
ALlen phillips
Green Lee
WiLliam Lee
wiLliam ken Allen
//sub指揮替換指定範圍內第一次匹配到的符號條件的字元,也就是第一段的第一個小寫l