日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux Systemd服务

發布時間:2024/1/8 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux Systemd服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux Systemd服務(2021.07.09)

文章目錄

  • Linux Systemd服務(2021.07.09)
    • 一、概述
    • 二、配置文件
      • 2.1 Unit
      • 2.2 Service
      • 2.3 Install
    • 三、開機啟動
    • 四、啟動服務
    • 五、查看狀態
    • 六、停止服務
    • 七、重啟服務

一、概述

本文將介紹通過systemd來實現服務的自啟動。systemd是一套系統啟動和管理的工具,字母d是守護進程(daemon)的縮寫。

二、配置文件

systemd的配置文件主要放置在/etc/systemd/system/與/lib/systemd/system目錄,如果需要添加服務,只需在目錄下添加對應的配置文件即可。例如:

# 添加服務配置文件 $ sudo vim /etc/systemd/system/demo.service [Unit] Description=demo # 服務描述 After=network.target # 指定服務依賴的 target[Service] User=root # 服務運行用戶 Group=root # 服務運行用戶組WorkingDirectory=/root/water # 服務工作目錄 ExecStart=/usr/local/bin/java -jar demo.jar # 服務啟動命令 Type=simple # 服務進程啟動方式Restart=on-failure # 指定服務何時重啟[Install] WantedBy=multi-user.target # 指定服務所屬 target,與自啟動相關,一般不用改# 重新加載所有 service 的配置 $ sudo systemctl daemon-reload

2.1 Unit

systemd可以管理所有的系統資源,不同的資源稱為Unit(單位),該部分可以定義Unit的元數據,以及配置與其它Unit的關系。主要字段如下:

  • Description:簡短描述
  • Documentation:文檔地址
  • Requires:當前 Unit 依賴的其他 Unit,如果它們沒有運行,當前 Unit 會啟動失敗
  • Wants:與當前 Unit 配合的其他 Unit,如果它們沒有運行,當前 Unit 不會啟動失敗
  • BindsTo:與Requires類似,它指定的 Unit 如果退出,會導致當前 Unit 停止運行
  • Before:當前 Unit 必須在該字段指定的 Unit 之前啟動
  • After:當前 Unit 必須要在該字段指定的 Unit 之后啟動

2.2 Service

Service用來配置 Service,只有 Service 類型的 Unit 才有該部分。主要字段如下:

  • Type:定義啟動時的進程行為,它有以下幾種值:
    • Type=simple:默認值,執行 ExecStart 指定的命令,啟動主進程
    • Type=forking:以 fork 方式從父進程創建子進程,創建后父進程會立即退出
    • Type=oneshot:一次性進程,Systemd 會等當前服務退出,再繼續往下執行
    • Type=dbus:當前服務通過D-Bus啟動
    • Type=notify:當前服務啟動完畢,會通知 Systemd,再繼續往下執行
    • Type=idle:若有其他任務執行完畢,當前服務才會運行
  • User:啟動當前服務的用戶
  • Group:啟動當前服務的用戶組
  • WorkingDirectory:當前服務的工作目錄
  • ExecStart:啟動當前服務的命令
  • ExecStartPre:啟動當前服務之前執行的命令
  • ExecStartPost:啟動當前服務之后執行的命令
  • ExecReload:重啟當前服務時執行的命令
  • ExecStop:停止當前服務時執行的命令
  • ExecStopPost:停止當其服務之后執行的命令
  • RestartSec:自動重啟當前服務間隔的秒數
  • Restart:定義何種情況 Systemd 會自動重啟當前服務,可能的值包括always(總是重啟)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
  • TimeoutSec:定義 Systemd 停止當前服務之前等待的秒數
  • Environment:指定環境變量

2.3 Install

Install用來定義如何啟動,以及是否開機啟動。主要字段如下:

  • WantedBy:它的值是一個或多個 Target,當前 Unit 激活時(enable)符號鏈接會放入/etc/systemd/system目錄下面以 Target 名 + .wants后綴構成的子目錄中
  • RequiredBy:它的值是一個或多個 Target,當前 Unit 激活時,符號鏈接會放入/etc/systemd/system目錄下面以 Target 名 + .required后綴構成的子目錄中
  • Alias:當前 Unit 可用于啟動的別名
  • Also:當前 Unit 激活(enable)時,會被同時激活的其他 Unit

三、開機啟動

通過下面的命令設置服務開機自啟動:

$ sudo systemctl enable demo.service

四、啟動服務

設置開機啟動后,服務并不會立即啟動,可以通過下列命令啟動服務:

$ sudo systemctl start demo.service

五、查看狀態

服務可能會啟動失敗,通過以下命令查看服務狀態:

$ sudo systemctl status demo.service

六、停止服務

可以通過以下命令終止正在運行的服務:

$ sudo systemctl stop demo.service

如果命令沒有響應,可以通過以下命令強制kill進程:

$ sudo systemctl kill demo.service

七、重啟服務

通過以下命令重啟服務:

$ sudo systemctl restart demo.service

參考文章:

  • Systemd 入門教程-命令篇:https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
  • Systemd 入門教程-實戰篇:https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html

總結

以上是生活随笔為你收集整理的Linux Systemd服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。