systemd的新特性及常見的systemd unit類型分析

来源:https://www.cnblogs.com/walk1314/archive/2018/05/23/9067658.html
-Advertisement-
Play Games

systemd概述 systemd核心概念:unit systemd的service unit file詳解 實例:編譯安裝httpd,並實現通過systemd進行管理 1)通過 rpm -q httpd 命令檢查系統是否已安裝apache,如有先進行卸載; 2)下載Apache(httpd)源碼: ...


systemd概述

  1)systemd是一種新的linux系統服務管理器,用於替換init系統,能夠管理系統啟動過程和系統服務,一旦啟動起來,就將監管整個系統。在centos7系統中,PID1被systemd所占用;
  2)systemd可以並行地啟動系統服務進程,並且最初僅啟動確實被依賴的服務,極大減少了系統的引導時間,這也就是為什麼centos7系統啟動速度比centos6快許多的原因;
  3)systemctl 是 systemd 的主命令,用於管理系統及服務。

    systemd的新特性:
            系統引導時實現服務並行啟動;
            按需激活進程;
            系統狀態快照;
            基於依賴關係定義服務控制邏輯

    systemd的關鍵特性:
            基於socket的激活機制:socket與程式分離;
            基於bus的激活機制;
            基於device的激活機制;
            基於Path的激活機制;
            系統快照:保存各unit的當前狀態信息於持久存儲設備中;
            向後相容sysv init腳本,放在/etc/init.d/
    註意:systemctl的命令是固定不變的;非由systemd啟動的服務,systemctl無法與之通信

systemd核心概念:unit

    unit由其相關配置文件進行標識、識別和配置;文件中主要包含了系統服務、監聽的socket、保存的快照以及其它與init相關的信息; 這些配置文件主要保存在:
            /usr/lib/systemd/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, 用於定義文件系統中的一文件或目錄

systemd的service unit file詳解

1)service unit file 通常由三部分組成:
   [Unit]:定義與Unit類型無關的通用選項;用於提供unit的描述信息、unit行為及依賴關係等;
   [Service]:與特定類型相關的專用選項;此處為Service類型;
   [Install]:定義由“systemctl enable”以及"systemctl disable“命令在實現服務啟用或禁用時用到的一些選項
2)各部分釋義:
   [Unit] 段的常用選項:
     Description:描述信息; 意義性描述;
     After:定義unit的啟動次序,表示當前unit應該晚於哪些unit啟動;其功能與Before相反;
     Requies:依賴到的其它units;強依賴,被依賴的units無法激活時,當前unit即無法激活;
     Wants:依賴到的其它units;弱依賴;
     Conflicts:定義units間的衝突關係
   [Service] 段的常用選項:
     Type:用於定義影響ExecStart及相關參數的功能的unit進程啟動類型,其類型有:
        simple:預設值,執行ExecStart指定的命令,啟動主進程
        forking:以 fork 方式從父進程創建子進程,創建後父進程會立即退出
        oneshot:一次性進程,Systemd 會等當前服務退出,再繼續往下執行
        dbus:當前服務通過D-Bus啟動
        notify:當前服務啟動完畢,會通知systemd再繼續往下執行
        idle:若有其他任務執行完畢,當前服務才會運行
     EnvironmentFile:環境配置文件;
     ExecStart:指明啟動unit要運行命令或腳本; 
     ExecStartPre:在ExecStart之前運行;
        ExecStartPost:在ExecStart之後運行;
     ExecStop:指明停止unit要運行的命令或腳本;
     Restart:當設定Restart=1時,則當次daemon服務意外終止後,會再次自動啟動。
   [Install] 段的常用選項:
     Alias:別名,可使用systemctl command Alias.service;
     RequiredBy:被哪些units所依賴;
     WantedBy:被哪些units所依賴
註意:對於新創建的unit文件或修改了的unit文件,要通知systemd重載此配置文件,通過命令 systemctl daemon-reload.

實例:編譯安裝httpd,並實現通過systemd進行管理

1)通過 rpm -q httpd 命令檢查系統是否已安裝apache,如有先進行卸載;

2)下載Apache(httpd)源碼:https://httpd.apache.org/

3)自定義安裝依賴APR,需要先下載APR庫和PCRE環境:http://apr.apache.org/download.cgi    http://www.pcre.org

4)通過 yum group install "Development Tools" 安裝開發工具包

5)解壓所有已下載的文件

6)安裝PCRE

[root@happiness pcre-8.42]# ./configure --prefix=/usr/local/pcre
[root@happiness pcre-8.42]# make
[root@happiness pcre-8.42]# make install
註意:此處如果安裝的是pcre2的版本,後期編譯Apache時會出現錯誤提示:configure: error: Did not find pcre-config script at /usr/local/pcre。
   此時我們需要卸載已安裝的pcre2:rm -rf /usr/loca/pcre,直接刪除編譯安裝的目錄即可刪除pcre。

7)安裝APR

[root@happiness apr-1.6.3]# ./configure --prefix=/usr/local/apr
[root@happiness apr-1.6.3]# make
[root@happiness apr-1.6.3]# make install

8)安裝APR-util

[root@happiness apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@happiness apr-util-1.6.1]# make
[root@happiness apr-util-1.6.1]# make install

9)安裝Apache(httpd)

[root@happiness httpd-2.4.33]# ./configure --prefix=/usr/apache24 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
[root@happiness httpd-2.4.33]# make
[root@happiness httpd-2.4.33]# make install

10)運行httpd服務

[root@happiness httpd-2.4.33]# /usr/apache24/bin/apachectl start

註意:啟動httpd服務時有可能提示:servername未設置:

    AH00557: httpd: apr_sockaddr_info_get() failed for happiness
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

  此時我們可通過修改配置文件解決問題:

[root@happiness httpd-2.4.33]# vim /usr/apache24/conf/httpd.conf

  

11)添加服務腳本,使得可以通過systemd來管理httpd服務:

CentOS7服務的systemctl腳本存放在/usr/lib/systemd目錄下,有系統(/usr/lib/systemd/system)和用戶(/usr/lib/systemd/user)之分。此處我們在/usr/lib/systemd/system目錄下新建httpd.service的腳本文件,內容如下:

[Unit]
Description=The Apache HTTP Server 2.4.33
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
EnvironmentFile=/usr/apache24/conf/httpd.conf
ExecStart=/usr/apache24/bin/httpd -k start -DFOREGROUND
ExecReload=/usr/apache24/bin/httpd -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}

[Install]
WantedBy=multi-user.target

此時我們可以通過 systemctl命令來管理httpd服務了。


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

-Advertisement-
Play Games
更多相關文章
  • (一) 安裝環境 VMware® Workstation 12 Pro,安裝到物理機的話還需要做個U盤啟動盤 (二) 下載 https://www.centos.org/download/ 如果不清楚要用哪個ISO文件,下載DVD ISO就行了,這個類型的鏡像文件允許你自己選擇需要安裝的軟體,eve ...
  • 輸入分隔符,英文原文為field separator,此處簡稱為FS,預設是空白字元(即空格),awk預設以空白字元為分隔符對每一行進行分割。 輸出分割符,英文原文為output field separator,此處簡稱為OFS,awk將每行分割後,輸出在屏幕上的時候,awk預設的輸出分割符也是空格 ...
  • awk是一個超級強大的文本格式化處理工具,他與grep, sed命令被成為linux 三劍客命令 三劍客命令的特點: grep:只要用來匹配和查找文本 sed: 編輯匹配到文本 awk: 格式化文本,可以對複雜文本進行處理 awk語法格式:awk [options] 'program' file1 ...
  • 索引: 開源Spring解決方案--lm.solution 參看代碼 GitHub: maven.txt 一、Linux (DeepinOS) 環境 1.官網下載 2.解壓 3.配置環境變數 4.配置 maven 倉庫地址 5.生效 6.驗證 蒙 2018-05-23 22:05 周三 ...
  • 假設定義了一個變數為,代碼如下: 可以用${ }分別替換得到不同的值: 記憶的方法為: # 是 去掉左邊(鍵盤上#在 $ 的左邊)% 是去掉右邊(鍵盤上% 在$ 的右邊)單一符號是非貪婪匹配;兩個符號是貪婪匹配 ${file:0:5}:提取最左邊的 5 個位元組:/dir1${file:5:5}:提取 ...
  • 就在昨天晚上,小王同學的電腦繼1803更新後第4次藍屏了,原本藍屏後自動重啟後就會恢復正常,然而天真的我太低估了微軟的實力。藍屏-重啟-藍屏-重啟無限迴圈 當然,重啟幾次就進入了高級模式 高級模式 進去疑難解答-高級選項,試了試啟動修複,沒用。 繼續,搜索藍屏代碼PAGE_FAULT_IN_NONP ...
  • 1、d: 進入d盤 2、dir(directory) 顯示當前文件夾下的所有內容 3、md (make directory) +文件夾名 在當前文件夾下創建文件夾 4、rd (remove directory)+文件夾名 刪除文件夾 5、del+文件名(需要尾碼) 刪除文件 6、cd (change ...
  • 在Linux系統,如果是連接ssh修改密碼,那非常簡單,關鍵是如何實現只要調用命令就能修改密碼,而且不需要交互輸入密碼呢? ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...