Systemdで独自のServiceのUnitを作成する!

SystemdのServiceのUnitを作成し、Systemdで制御可能にします。

Service用のUnitを作成する!

「etc/systemd/system」にUnitを作成します。以下は、Db2のインスタンスを起動する例になります。Db2は、systemd対応しているので、通常はsystemdより自動起動しますが、Db2の設定で自動起動を停止して、複数インスタンをインスタンス別にsystemdに登録して管理することを想定しています。シェルより、製品系の常時起動のプロセスを起動する場合は、Type=oneshotで、RemainAfterExit=yesを使用するとよいです。

vi /etc/systemd/system/db2inst1.service
[Unit]
Description=Db2 Instance - db2inst1

[Service]
Type=oneshot
RemainAfterExit=yes
User=db2inst1
ExecStart=/home/ubuusr01/bin/start_db2inst1.sh
ExecStop=/home/ubuusr01/bin/stop_db2inst1.sh

[Install]
WantedBy=multi-user.target

Service用のUnitファイルを認識させる!

再起動してもよいですが、以下のコマンドで再起動せずにsystemdに新規に作成したUnitを認識させることができます。

$ sudo systemctl daemon-reload
$ sudo systemctl list-unit-files | grep db2inst1
db2inst1.service                           disabled  

Serviceをの起動と停止を行う!

Serviceの起動と停止を行います。restartのオプションを使用して再起動することもできます。

$ sudo systemctl status db2inst1
$ sudo systemctl start db2inst1
$ sudo systemctl status db2inst1
$ sudo systemctl stop db2inst1
$ sudo systemctl status db2inst1

Serviceを自動起動に設定する!

Serviceを自動起動に設定します。

$ sudo systemctl enable db2inst1
Created symlink /etc/systemd/system/multi-user.target.wants/db2inst1.service → /etc/systemd/system/db2inst1.service.
$ sudo systemctl is-enabled db2inst1
enabled

再起動して、Serviceが自動起動していることを確認します。

おわりに

ServiceのUnitを作成して、multi-user.targetに登録しました。Systemdに登録すれば自動起動の設定を行うこともできます。

関連記事

関連書籍(Amazon)

N/A