一、Systemd 的簡介
Systemd是一個用于管理Linux系統啟動進程和服務的系統和服務管理器,取代了傳統的init系統。它提供了并行啟動、依賴關系管理、動態加載服務文件等功能,成為現代Linux發行版中主流的初始化系統。
二、Systemd 的參數說明
[Unit]
Description=My Custom Service # 服務描述,簡短描述服務的作用
After=network.target # 指定服務應該在哪些服務之后啟動
Requires=docker.service # 指定依賴服務,如果依賴服務沒有成功啟動,當前服務將無法啟動
Wants=mysql.service # 指定依賴服務,如果依賴服務沒有成功啟動,不會導致當前服務無法啟動。
Conflicts=apache2.service # 指定沖突服務
Before=ssh.service # 指定服務應該在哪些服務之前啟動
Requisite=mysql.service # 要求指定服務成功啟動后再啟動當前服務
PartOf=multi-user.target # 指定當前服務是其他服務的一部分,其他服務異常也會影響它
BindsTo=user@1000.service # 指定一個服務,當被綁定的服務通過系統調用創建時,當前服務也會被創建
Documentation=https://example.com # 添加文檔鏈接
[Service]
Type=simple # 指定服務的類型,如 ?simple?, ?forking?, ?oneshot?, ?dbus?, ?notify?, 等。
ExecStart=/usr/bin/node myapp.js # 指定啟動服務時要執行的命令或腳本
ExecStop=/usr/bin/node myapp.js # 指定停止服務時要執行的命令或腳本
Restart=always # 指定服務故障時的重啟策略,如 ?always?, ?on-failure?, ?no?, 等
User=myuser # 指定特定用戶運行服務
Group=mygroup # 指定特定用戶組運行服務
Environment=VAR1=value1 # 設置服務運行時的環境變量
WorkingDirectory=directory # 指定服務的工作目錄
OOMScoreAdjust=500 # Out-Of-Memory 分數調整
LimitNOFILE=10000 # 最大打開文件數限制
LimitNPROC=200 # 最大進程數限制
StandardOutput=syslog # 標準輸出重定向到syslog
StandardError=syslog # 標準錯誤輸出重定向到syslog
[Install]
WantedBy=multi-user.target # 指定目標,當這些目標被啟動時,服務也會被啟動
Alias=my-custom-service # 為服務定義別名
Also=another.service # 同時處理另一個單元
DefaultInstance=default # 設置默認實例名稱
三、Systemd 的創建步驟
1、編寫服務文件
服務文件是描述服務的配置文件,通常存放在/etc/systemd/system/
目錄下,后綴為.service
。可以使用任何文本編輯器來創建服務單元文件。
2、 設置權限
設置權限:sudo chmod 755 your-service.service
3、 啟用和啟動服務
開機自啟:sudo systemctl enable your-service.service
啟動服務:sudo systemctl start your-service.service
服務狀態:sudo systemctl status your-service.service
5、控制服務
啟動服務:sudo systemctl start your-service.service
停止服務:sudo systemctl stop your-service.service
重啟服務:sudo systemctl restart your-service.service
禁用服務:sudo systemctl disable your-service.service
6、 查看日志
日志查詢:journalctl -u your-service.service
四、Systemd 的實戰示例