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 を用いる。