systemctl¶
example¶
/etc/systemd/system/
配下とかに配置.
[Unit]
Description=docker-compose nginx-proxy service
Requires=docker.service
[Service]
User=root
Type=simple
Environment=COMPOSE_FILE=/home/composer/nginx-proxy/docker-compose.yml
ExecStartPre=/usr/bin/docker-compose -f ${COMPOSE_FILE} kill
ExecStartPre=/usr/bin/docker-compose -f ${COMPOSE_FILE} rm -v -f
ExecStartPre=/usr/bin/docker-compose -f ${COMPOSE_FILE} down
ExecStart=/usr/bin/docker-compose -f ${COMPOSE_FILE} up --force-recreate --abort-on-container-exit
ExecStop=/usr/bin/docker-compose -f ${COMPOSE_FILE} stop
ExecStopPost=/usr/bin/docker-compose -f ${COMPOSE_FILE} rm -v -f
ExecStopPost=/usr/bin/docker-compose -f ${COMPOSE_FILE} down
Restart=always
RestartSec=180s
[Install]
WantedBy=multi-user.target
unit section¶
Description: 説明
Documentation: ドキュメント
Requires: 自Unitが必要とする前提Unit(依存unit起動に失敗した場合,自unitも失敗する.強い依存.)
Wants: 自Unitが必要とする前提Unit(依存unitが失敗しても,自unitは起動を継続する.弱い依存.)
After: 自Unitより先に起動するべきUnit
Before: 自Unitより後に起動するべきUnit
Conflict: 自Unitと同時に起動するべきでないUnit
- Requires/WantsとAfter/Beforeは概念として異なるものだということに注意する.依存関係と起動順序は異なるものである.
install section¶
WantedBy: enable時にこのUnitの.wantsディレクトリにリンクを作成する
RequiredBy: enable時にこのUnitの.requiredディレクトリにリンクを作成する
Also: enable/disable時に同時にenable/disableするUnit
Alias: enable時にこのUnitの別名を用意
- ランレベルとtargetの対応
- 0: poweroff.target(電源停止)
- 1: rescue.target(レスキュー/シングルユーザモード)
- 3: multi-user.target(マルチユーザモード(console))
- 5: graphical.target(GUIモード)
- 6: reboot.target(再起動)
- none: emergency.target(緊急モード)
service¶
User: Unitを操作するユーザ
Group: Unitを操作するグループ
RootDirectory: 指定directoryにchrootする.
ExecStart: 起動コマンド
ExecReload: reloadコマンド
ExecStop: 停止コマンド
ExecStartPre/ExecStartPost: サービス起動前後の追加コマンド(サービス起動判定には関連させたくないコマンドを記載)
ExecStopPost: サービス停止後に実行するコマンド(サービスが異常停止した際にも実行される)
EnvironmentFile: 環境変数を読み込むファイル
Type: サービスプロセスの起動完了の判定法(simple[default]/forking/oneshot/notify/dbus)
RemainAfterExit: oneshotの場合等,exitしたあともstatus activeを継続したい場合にyesとする(yes/no)
PIDFile: fork型サービスのメインプロセスのPIDファイル指定(forkするとmainプロセスpidが掌握できないため,メインプロセスPIDを示すファイルを指定する.)
BusName: D-Bus型サービスのbus接続名
Restart: サービスプロセス停止時の再起動条件(no[default]/always/on-success/on-failure)
RestartSec: リスタートを試みる間隔
StartLimitInterval: 起動制限インターバル.インターバル時間中にStartLimitBurst回を超えた回数startすると制限される.
StartLimitBurst: 起動制限回数
PrivateTmp: このサービス専用の/tmpと/var/tmpを用意する
KillMode: ExecStopでプロセスが残っている場合にどうするか.(none(残置)/process(メインプロセスをsigterm/sigkill)/control-group(グループ内全プロセスをsigterm/sigkill)/mixed(processしてcontrol-groupする))
commands¶
systemctl [status/enable/disable/start/stop/reload/reload-or-restart/try-restart/reload-or-try-restart] example.service
reload
はunitがreload対応しているときのみ.try-restart
系は停止している場合は何もしない,restart
の場合は停止しても起動する.reload-or-*
系はreload対応していればreload,そうでない場合はreload
, ortry-reload
.
systemctl daemon-reload
- unitファイル再読み込み.
systemctl list-unit-files --type=service
type=service
一覧
systemctl is-enabled example.unit