建立 Unit 檔案#
首先建立一個 system service unit 檔案,格式如下
[Unit] |
ExecStart
為該執行的程式或是指令,如php /path/to/main.php
- 如果有需要先執行的指令,可以使用
ExecStartPre
,如ExecStartPre=mkdir /path/to/log/
- 如果有需要後執行的指令,可以使用
ExecStartPost
,如ExecStartPost=rm /path/to/some.txt
System Level#
若要以 root 的方式執行 service,則將 unit 檔存放於 /usr/lib/systemd/system/service-name.service
(自行修改 service name)
User Level#
若要以特定的使用者執行 service,則將 unit 檔存放於 ~/.config/systemd/user/service-name.service
(自行修改 service name)
- 根據是誰的 home 目錄來決定是哪個使用者的 service
安裝 service#
安裝的意思為,為 service 設定權限,在何種開機模式下會自動執行,如上述範例為 multi-user,其餘各種開機模式可見此篇
- 指令
systemctl install service-name.service |
- 也可以先執行確認結果
systemctl start service-name.service |
--user
代表 user level,--system
是 system level,通常預設是 system level
確認 Log#
若是要確認 system service 的 log,則需要使用 journald 這個 service
journalctl -fu service-name |
修改 Unit 檔案
如果是在已經安裝完 service 後又有修改 unit 檔案時,在 restart service 需要先 reload daemon
systemctl daemon-reload |
systemctl restart service-name.service |