GNU/Linux >> Linux の 問題 >  >> Linux

systemd:起動直後の SIGTERM

start.sh が終了すると、systemd は start.sh と同じ cgroup 内のすべてを強制終了します

オプションは次のとおりです:

  • Unit セクションで KillMode を設定して処理します (デフォルトは control-group です)。これにより、systemd は直接起動したプロセスのみを強制終了します。

  • start.sh がバックグラウンドで何かを開始して終了するのではなく、フォアグラウンドで実行する

あなたの状況では、オプション 2 が実行可能で、より簡単だと思います。

ソース:https://unix.stackexchange.com/a/231201/45329


KillMode を変更しても process まで あなたの状況では以下のように動作しますが、推奨される解決策ではありません.

[Service]
KillMode=process
...

KillMode の問題 process に設定 それは systemd です 開始したプロセスのすべての子に対する制御を失います。つまり、何かが発生し、プロセスの 1 つが何らかの理由で終了しなければ、そのプロセスは残り続けることになります。

あなたの状況でのより良い解決策は、すべてのプロセスを作成し、それらの pid を保持することです

シェルスクリプトで使用する待機コマンドは、使用しているシェルによって異なる場合があります (私が提案したリンクは bash 用です)。シェル スクリプトにすべての子を待機させることは、フォアグラウンドで切り離されない 1 つの子を開始することと実質的に同じです。

多かれ少なかれ、このようなものです:

#!/bin/bash

# Start your various processes
process1 &
PROCESS1_PID=$!
process2 &
PROCESS2_PID=$!
process3 &
PROCESS3_PID=$!

# Wait on your processes
wait $PROCESS1_PID $PROCESS2_PID $PROCESS3_PID

# OR, if I'm correct, bash also allows you to wait on all children
# with just a plain wait like so:
wait

# reach here only after children 1, 2, and 3 died

Linux
  1. JessieからStretchにアップグレードした後、OpenDKIMが起動しない

  2. Ssh – Ssh経由で接続した直後にスクリプトを実行する方法は?

  3. `systemd`でクラッシュした後にFsckディスクを自動的に強制する方法は?

  1. Systemdが開始直後にサービスを停止するのはなぜですか?

  2. 別のユーザーに「su」または「su -」を指定した後、X11 アプリケーションを起動できない

  3. systemd サービス ファイルで、USB の準備ができた後はどうすればいいですか?

  1. トラブルシューティングツールとしてsystemdの使用を開始します

  2. アイドル時間後に systemd サービスを非アクティブ化する

  3. 再起動後に PHP-FPM が自動的に起動しない