Services
編寫基本的 systemd 服務文件
我正在開發一個 Nodejs 應用程序,使用者通過 localhost 上的 HTTP 與之互動。幾乎沒有參數,守護程序幾乎沒有依賴關係,它只需要在登錄時啟動。
我想在每個平台上遵循啟動腳本的習慣用法,這意味著 Ubuntu 上的 Upstart 和 Fedora 上的 systemd。
- 有沒有編寫 systemd 系統文件的好教程?
- 是否有任何“最佳實踐”需要注意?
我找到了這些資源:
我主要是在尋找各種 API 作為參考,以及要遵循的基本格式。
我將從Systemd 手冊頁開始。它們代表了系統和服務的綜合資源。
以下範例受到此連結的啟發,該連結實際上並未提及所有步驟,僅列出來源: http: //patrakov.blogspot.com/2011/01/writing-systemd-service-files.html
第 1 步:我創建了這個文件(註釋位置),它本質上會觸發一個帶有擴展參數的 bash 程序。您可以觸發自己的命令,該命令可能與 bash 不同。
[root@y500-fedora ~]# cat /etc/systemd/system/foo.service [Unit] Description=foo [Service] ExecStart=/bin/bash -c "while true; do /bin/inotifywait -qq --event close_write /sys/class/backlight/acpi_video0/brightness; su myusername -c '/bin/xbacklight -display :0 -set $(cat /sys/class/backlight/acpi_video0/brightness)'; done" [Install] WantedBy=multi-user.target
第 2 步:
重新載入
systemd
:systemctl daemon-reload
啟動新服務:
systemctl enable foo
(同樣可以
disable
)(可選)第 3 步:它應該在下次重新啟動時自動啟動到多使用者模式(執行級別 3),但如果您想立即啟動它:
systemctl start foo systemctl status foo # optional, just to verify
**更新:**為了完整起見,我應該補充一點,ubuntu bionic 似乎有一個非常詳盡的手冊頁。此處為 RTFM