2021/02/07

daemontoolsからsystemctlに移行した

WSL2環境でこのブログを稼働させようと思って、せっかくなのでCentOSからUbuntuに移行させたのもあって、daemontoolsからsystemctlへの載せ替えもやってみるかーということで、日々の運用コマンド備忘録を書いておく。

myapp.service ユニットファイル

/lib/systemd/system に myapp.service として配置する(シンボリックリンクで配置してる)。

[Unit]
Description=myapp

[Service]
User=user
Type=simple
PIDFile=/home/user/myapp/data/myapp.pid
ExecStart=/home/user/myapp/run
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

常時起動設定

$ sudo systemctl enable myapp.service

systemctl での操作

ステータス確認( -l オプションでフルログ表示)

$ sudo systemctl status myapp.service -l

reload/stop/start

$ sudo systemctl reload myapp.service

serviceが実際に利用しているユニットファイルの確認

$ sudo systemctl cat myapp.service

ログの確認( -f が tail -f 相当)

$ sudo journalctl -f -u myapp

envまわり

ユニットファイルにenvが書けるらしいけど、開発環境ではユニットファイルを使用しないでアプリ起動しているので、2重管理を避けるため、envはdaemontoolsのenvコマンドを引き続き使用している。daemontools自体はaptで簡単に入れられるので特に問題なし。

service と systemctl

serviceコマンドはsystemctlの上位コマンドになっていて、ディストリビューションやバージョンによって service コマンドから内部的にキックされるプロセス管理コマンドは異なる。

Ubuntu18の場合は、serviceコマンドからsystemctlが呼び出される。/etc/init.d を直接叩くこともできるが、通常はユニットファイルを書いて serviceコマンド経由か、細かい作業が必要なら systemctl を用いる。

サイト内検索