systemd的新特性及unit常見類型分析與awk用法示列

来源:https://www.cnblogs.com/kangfeng/archive/2018/04/25/8945676.html
-Advertisement-
Play Games

簡述systemd的新特性及unit常見類型分析,能夠實現編譯安裝的如nginx\apache實現通過systemd來管理 系統引導的新特性 1. 系統引導時實現服務啟動; 2. 按需激活進程; 3. 系統狀態快照; 4. 基於依賴關係定義服務控制邏輯; 核心概念:unit(單元) 1. unit由 ...


簡述systemd的新特性及unit常見類型分析,能夠實現編譯安裝的如nginx\apache實現通過systemd來管理
  • 系統引導的新特性
    1. 系統引導時實現服務啟動;
    2. 按需激活進程;
    3. 系統狀態快照;
    4. 基於依賴關係定義服務控制邏輯;
  • 核心概念:unit(單元)
    1. 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/
    管理系統服務:
    Centos7:SErvice類型的unit文件;
  • 編譯安裝Nginx
  1. 安裝軟體

    [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
    -測試

    [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
    指定分隔符的選項用-F,如-F:,表示以冒號為分隔符。另外還可以指定輸出分隔符,如下:
    [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

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 系統:centos7 LNMP(centos7, nginx, mysql, python3) 雲服務:騰訊雲 1、python3安裝 如果選擇公共鏡像安裝的話,centos內置python2,是不會安裝python3的,因此需要我們自己安裝python3。 第一步: 下載最新的python3安裝包 ...
  • 轉自:https://blog.csdn.net/valage/article/details/73332147 圖片中可以看到掛載點“/”的利用率移到100%,空間不夠,所以要對其進行分區。 1. 先進入虛擬機設置里增大磁碟空間 註意:將25改成50,以擴大空間。這裡一定要寫比25大的數,因為他是 ...
  • 1. 安裝環境 本文使用三台CentOS6.4虛擬機模擬完全分散式環境。前五個過程和hadoop1.x安裝相同 1.1. 安裝環境 1.2. 集群環境 集群包含三個節點:1個namenode、2個datanode 在我們的測試機上,我們使用三台虛擬機來模擬linux。我們下文中稱之為tiny01、t ...
  • 一、硬碟介面類型 硬碟的介面主要有IDE、SATA、SCSI 、SAS和光纖通道等五種類型。其中IDE和SATA介面硬碟多用於家用產品中,也有部分應用於伺服器,SATA是一種新生的硬碟介面類型,已經取代了大部分IDE介面應用。SCSI 、SAS主要應用於伺服器上,普通家用設備一般不支持SCSI和SA ...
  • ASCII、Unicode和UTF 8編碼的區別 摘要總結: ASCII的編碼是128個字元 GB2312編碼用來把中文編進去的,日本把日文編進Shift_JIS里... Unicode是為瞭解決各國亂碼的,但浪費存儲空間 UTF 8編碼把一個Unicode字元根據不同的數字大小編碼成1 6位元組,英 ...
  • DAC是STM32系列的一個基本外設,可以將數字信號轉化成模擬信號,這次我將使用DAC來輸出一個特定波形。 首先確定工作方法,由於我目前在做的簡易示波器在輸出波形的同時還需要顯示輸入信號,所以不能占用太多CPU時間,於是就選用了基於DMA的ADC。 使用DMA只需告訴DMA外設它要怎麼搬移數據就可以 ...
  • ps: 當第一次使用yum或yum資源庫有更新時,yum會自動下載所有所需的headers放置於 /var/cache /yum 目錄下,所需時間可能較長。 還可以使用 yum info 命令列出包信息,yum info 可用的參數與 yum list 的相同。 yum 命令還可以使用 -y 參數用 ...
  • sar(System Activity Reporter系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,可以 從多方面對系統的活動進行報告,包括:文件的讀寫情況、系統調用的使用情況、磁碟I/O、CPU效率、記憶體使用狀況、 進程活動及IPC有關的活動等。本文主要以CentOS ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...