私はこのようなワンショットサービスを持っています
[Unit]
Description=My Service
After=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/myservice.sh start
ExecStop=/usr/local/bin/myservice.sh stop
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
私が実行しているDockerイメージには
STOPSIGNAL SIGRTMIN+3
ENTRYPOINT ["/sbin/init"]
コンテナを起動すると、サービスは期待どおりに開始されます。手動で実行するとsystemctl stop myservice
期待どおりに動作しますが、 を実行するとdocker stop mycontainer
停止が呼び出されません。これは停止信号の問題ですか、それともサービス構成の問題ですか?
答え1
サービスと信号は正しかったのですが、systemd-halt
これが機能するにはサービスが実行されている必要があります。