バックグラウンドプロセスが終了するタイミングを理解する

バックグラウンドプロセスが終了するタイミングを理解する

いくつかのバックグラウンド プロセスを開始するスクリプトがあり、コマンドラインから呼び出されると正常に動作します。

ただし、同じスクリプトは xsession の起動時と、さらにいくつかの udev イベントでも呼び出されます。どちらの場合も、バックグラウンド プロセスは消えます。

スクリプトに sleep 10 を入れて、bg プロセスが実際に開始されていることを確認できましたが、スクリプトが存在すると、bg プロセスもそれとともに開始されます。 で bg プロセスを呼び出すことで解決しようとしましたstart_stop_deamon --backgroundが、違いはありませんでした。ただし、コンソールからスクリプトを呼び出してセッションを終了すると、bg プロセスは引き続き実行されます。

当面の問題を解決すること以外に (どんな助けでも大歓迎ですが)、私はその背後にあるロジックを理解したいと思っています。ターミナルが存在しないことに関係しているのではないかと疑っています。

答え1

プロセスを保護しますnohup:

nohup command-name &

stdout と stderr の nohup.out へのリダイレクトを無視する場合にも、この手法を使用できます。

command-name & disown

関連情報