Linux Simple Systemd Service Guide

来源:https://www.cnblogs.com/smith9527/archive/2019/01/21/10300561.html
-Advertisement-
Play Games

A simple guide for Linux systemd service ...


Simple Systemd Service Guide

主題

  • Systemd介紹
  • Systemd基本操作
  • 怎樣編寫_service_.service文件
  • 怎樣部署service

Systemd介紹

  • Linux OS的系統和服務管理者
  • 相容SysV初始化腳本(init scripts)
  • 提供如下功能特性:
    • 系統啟動時系統服務的並行啟動
    • Daemon程式的按需激活
    • 支持系統狀態快照(snapshots)
    • 基於依賴的服務控制邏輯
  • systemd取代RHL7的Upstart,作為預設的init系統

Systemd基本操作

  • 啟動服務

    systemctl start name.service
  • 停止服務

    systemctl stop name.service
  • 重啟服務

    systemctl restart name.service
  • 重載配置

    systemctl reload name.service
  • 檢查服務狀態

    systemctl status name.service

  • 輸出所有服務狀態

    systemctl list-units --type service --all
  • 使能服務

    systemctl enable name.service
  • 禁止服務

    systemctl disable name.service
  • 列出所有服務並檢查是否使能

    systemctl list-unit-files --type service

怎樣編寫name.service文件

name.service文件組成

  • [Unit]
    • 包含一般的選項,不依賴於單元類型(unit type)
    • 選項:提供單元描述,指定單元行為,設置對其他單元的依賴關係
  • [unit type]
    • 如果一個單元有特定的指令,則這些指令被組合在以單元類型命名的塊下。
      比如,service單元文件包含在[Service]塊中。
  • [Install]
    • 包含systemctl enable和disable命令使用的單元安裝信息

重要的[Unit]塊選項

  • Description

    單元有意義的描述信息,systemctl status命令輸出中顯示該文本信息。

  • Documentation

    提供該單元的URI引用文件列表。

  • After

    定義單元的啟動順序。該單元只在After指定的單元處於激活狀態後才啟動。

    Before選擇與After功能相反。

  • Requires

    配置與其他單元的依賴關係。在Requires中的單元與該單元一起激活。

    如果任何需要的單元啟動失敗,這個單元就不會被激活。

  • Wants

    配置比Requires弱的依賴關係。

    如果任何列出的單元沒有成功啟動,也不會影響該單元的激活。

    建議用於建立定製單元依賴關係。

  • Conflicts

    配置反向的依賴關係,即與Requires配置相反的依賴。

重要的[Service]塊選項

  • Type

    配置單元啟動類型。影響ExecStart和其他相關選項的功能。

  • simple

    預設選項。ExecStart啟動的進程為服務的主進程。

  • forking

    ExecStart啟動的進程創建一個子進程作為服務的主進程。啟動完成後父進程退出。

  • oneshot

    與simple相似,但是在啟動後續的單元之前進程退出。

  • dbus

    與simple相似,但是僅在主進程得到D-bus名稱之後才啟動後續的單元。

  • notify

    與simple相似,但是僅在通過sd_notify()函數發送通知消息後才啟動後續的單元。

  • idle
    與simple相似,但是直到所有job完成後,才真正執行服務的二進位程式,這避免與服務shell的狀態輸出信息混淆。

  • ExecStart

    當單元啟動時,執行該選項指定的命令或腳本。

  • ExecStop

    當單元停止時,執行該選項指定的命令或腳本。

  • ExecReload

    當單元重裝時,執行該選項指定的命令或腳本。

  • Restart

    如果該選項使能,當服務進程退出時,服務重啟。作為systemctl stop命令的異常處理。

  • RemainAfterExit

    如果該選項設置為True,即使服務所有的進程退出,這個服務也被認為處於激活狀態(active)。
    預設是False。
    當Type=oneshort配置時,這個選項有特殊的用處。

重要的[Install]塊選項

  • Alias

    提供單元的額外名稱,以空格隔開。除了systemctl enable,大部分sytemctl命令可以使用別名帶去真正的單元名稱。

  • RequiredBy

    依賴於該單元的其他單元列表。
    當該單元使能時,RequiredBy中的單元就會生成依賴於該單元的Require依賴關係。

  • WantedBy

    弱依賴於該單元的其他單元列表。
    當該單元使能時,WantedBy中的單元就會生成依賴於該單元的Want依賴關係。

  • Also

    指定和該單元一起安裝或卸載的其他單元列表。

  • DefaultInstance

    限定的實例化單元。即該選項指定了該單元使能的預設實例。
    Limited to instantiated units, this option specifies the default instance for which the unit is enabled.

例子:自定義中斷綁核服務

[Unit]
Description=Configure common_affinity service for system!
After=network.target

[Service]
Type=oneshot
ExecStart=/etc/init.d/common_affinity
ExecStop=/home/zxuss/affinity/superstop.sh
RemainAfterExit=True

[Install]
WantedBy=multi-user.target

怎樣部署service

以自定義中斷綁核服務為例子:

1.將name.service文件拷貝到/usr/lib/systemd/system/目錄下
cp -f ${work_path}/common_affinity.service /usr/lib/systemd/system/

2.將服務啟動腳本拷貝到/etc/init.d/目錄,或者其他目錄
cp -f ${work_path}/common_affinity /etc/init.d/

3.如果已經部署了name.service服務,則先禁止該服務,然後重新使能該服務
systemctl disable common_affinity.service
systemctl reenable common_affinity.service

4.如果沒有部署過name.service服務,則直接使能name.service服務
systemctl enable common_affinity.service

參考文檔:

Managing Services with systemd

systemd.service — Service unit configuration

How To Use Systemctl to Manage Systemd Services and Units

您的支持是對博主最大的鼓勵,感謝您的認真閱讀。

本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利


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

-Advertisement-
Play Games
更多相關文章
  • [aspnetcore.apidoc]一款很不錯的api文檔生成工具 ...
  • [TOC] 前言 記錄一下本周服務改造過程踩坑經歷。近期在做服務改造接入統一配置中心,對一些早期的服務進行升級,由此帶來了不少問題,好在都在測試環境解決了,平穩上線。 問題描述 代碼自動構建後,部署服務啟動失敗。到測試伺服器上手動啟動服務報錯“錯誤1053:服務沒有及時響應啟動或控制請求”,如圖: ...
  • 索引: 目錄索引 一.API 列表 C# 代碼中 instance.property == null 生成 SQL 對應的 is null : 如:.Queryer<Agent>() ... ... .Where(it => it.CrmUserId == null) ... ... 用於 單表 i ...
  • 樣本: 在這個示例中,我們使用的是微軟給我們提供的資料庫,也就是家喻戶曉的Northwind資料庫。要下載Microsoft的免費樣本Northwind資料庫,您需要訪問以下URL。下載Northwind資料庫在頁面上,您將找到下載按鈕,如以下屏幕截圖所示。 第2步:安裝Microsoft的免費樣本 ...
  • 由於當初選購ECS伺服器時沒有在意,把節點選擇了大陸,現在想想真應該選擇香港,這樣VPN的用處才能更大一些。所以一開始以為在ECS上搭建VPN伺服器沒有什麼用,直到前一陣子買的游戲加速器(國內的VIP)到期了,才想起來為什麼不試試看能否利用VPN給游戲加速呢,如果有效果就不用給迅游掏這筆冤枉錢了,哈 ...
  • 今天分享一下虛擬機安裝Ubuntu的過程,在開始安裝之前,需要下載VMware workstation pro和Ubuntu鏡像,兩者我都用的最新版,由於VMware workstation pro 15是付費的軟體,不想花錢的小伙伴可以去百度搜索激活密鑰! VMware workstation p ...
  • 磁碟基礎 扇區(secter):磁碟最小的物理存儲單位 磁軌:扇區圍成一圈就是一個磁軌 磁柱(cylinder):扇區組成的一個圓,早期以磁柱為最小分區單位,現在通常使用扇區為最小分區單位 分區 磁碟分區表主要有兩種格式MBR(限制較多)和GPT(較新且限制較少),MBR分區表中第一個扇區最重要,其 ...
  • 第一步:列出可安裝的桌面環境 第二步:安裝GNOME及相應桌面管理工具 第三步:設置開機啟動為GNOME 第四步:重啟 第五步:安裝相應軟體 1)五筆 2)sublime 下載sb3 http://www.sublimetext.com/3 解壓到 /usr/local 目錄 編輯 /usr/loc ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...