Systemd 筆記
Unit
- After: 本服務在這些服務之後啓動
- Before: 本服務在這些服務之前啓動
- Wants: 弱依賴,這些服務是否運行不影響本服務啓動
- Requires: 強依賴,本服務的運行依賴這些服務
Service
- EnvironmentFile: 環境參數文件,內部 key=value 格式,在當前文件中使用 $key 獲取 value
- ExecStart: 啓動時執行的命令
- ExecReload: 重啓服務時執行的命令
- ExecStop: 停止服務時執行的命令
- ExecStartPre: 啓動服務之前執行的命令
- ExecStartPost: 啓動服務之後執行的命令
- ExecStopPost: 停止服務之後執行的命令
- "-" 配置項前的減號"-"表示"抑制錯誤",發生錯誤時不影響後續命令執行
- Type
- simple: 默認,ExecStart 啓動的進程就是主進程
- forking: ExecStart 啓動時 fork 子進程,之後該父進程退出,子進程成爲主進程
- onshot: 類似 Simple,只執行一次
- dbus: 類似 Simple,等待 D-Bus 信號啓動
- notify: 類似 Simple,啓動完成後發出通知信號
- idle: 類似 Simple,等到其他任務執行完成後纔會啓動該服務
- RemainAfterExit=yes: 進程退出後服務保持運行
- KillMode
- control-group: 默認,殺掉所有子進程
- process: 只殺主進程
- mixed: 主進程收到 SIGTERM 信號,子進程收到 SIGKILL 信號
- none: 不殺進程,只執行服務的 stop 命令
- Restart
- no: 默認,退出後不重啓
- on-success: 正常退出時重啓
- on-failure: 非正常退出、被信號終止或超時重啓
- on-abnormal: 被信號終止和超時重啓
- on-abort: 收到沒有捕捉到的信號終止時重啓
- on-watchdog: 超時退出,纔會重啓
- always: 不管是什麼退出原因,總是重啓
- RestartSec: 系統重啓前等待的秒數
Install
- WantedBy=multi-user.target
重新加載配置文件
systemctl daemon-reload