一、什麼是systemd service
systemd是一個Linux系統初始化的系統和服務管理器,它為系統的引導和服務管理提供了新的解決方案。systemd service是systemd管理下的服務,是一種與傳統init.d腳本不同的服務管理方式。
與init.d腳本相比,systemd service具有以下優勢:
1、支持並行啟動服務,加快系統啟動速度;
2、支持前置和後置依賴關係,有利於服務的啟動順序管理;
3、支持動態的服務控制,如啟動、停止、重啟和重載配置等;
二、如何創建systemd service
systemd service是由一個unit文件來管理的。unit文件位於 /usr/lib/systemd/system目錄或 /etc/systemd/system目錄下。
創建一個systemd service分為以下幾個步驟:
1、創建unit文件,以.service作為後綴,並位於 /etc/systemd/system/目錄下,例如:
sudo vim /etc/systemd/system/myapp.service
2、編輯unit文件,定義服務,例如:
[Unit]
Description=My app service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/myapp
Restart=always
[Install]
WantedBy=multi-user.target
3、保存並退出,使用systemctl來重新載入systemd管理列表並啟動服務,例如:
sudo systemctl daemon-reload
sudo systemctl start myapp.service
sudo systemctl enable myapp.service
三、systemd service的重要參數
除了前置和後置依賴關係之外,systemd service還有許多重要的參數需要了解:
1、Type:指定服務類型,可以是simple、forking、oneshot、dbus等;
2、ExecStart:指定啟動服務的命令或腳本;
3、ExecStop:指定停止服務的命令或腳本;
4、Restart:指定服務在失敗時應該如何重啟,可以是always、on-failure、on-abnormal和never;
5、TimeoutStartSec:指定服務啟動的最長時間,超過此時間systemd將報告服務啟動失敗;
6、WorkingDirectory:指定服務的工作目錄;
7、Environment:指定服務的環境變量。
四、systemd service的管理命令
systemd service可以通過systemctl命令來進行管理:
1、啟動服務:sudo systemctl start myapp.service;
2、停止服務:sudo systemctl stop myapp.service;
3、重新啟動服務:sudo systemctl restart myapp.service;
4、查看服務狀態:sudo systemctl status myapp.service;
5、重新載入systemd管理列表:sudo systemctl daemon-reload;
6、設置服務開機自啟動:sudo systemctl enable myapp.service;
7、取消服務開機自啟動:sudo systemctl disable myapp.service。
五、示例代碼
下面是一個簡單的systemd service的示例代碼:
[Unit]
Description=My app service
[Service]
Type=simple
ExecStart=/usr/bin/myapp
Restart=always
[Install]
WantedBy=multi-user.target
以上代碼定義了一個名為My app service的服務,它的啟動命令是 /usr/bin/myapp。Restart=always表示當服務停止時自動重啟。
六、總結
本文深入介紹了systemd service的概念和使用方法,包括創建、啟動、停止、重啟、查看狀態和設置開機自啟動等。同時還介紹了最常用的幾個重要參數,並給出了一個示例代碼方便讀者參考。
原創文章,作者:ASVNI,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/372370.html