Linux Systemd服务
生活随笔
收集整理的這篇文章主要介紹了
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-reload2.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服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Systemd使用
- 下一篇: WorkNC3D沿面精加工快速修圆小技巧