私の理解では、ジョブは特定のシェルから開始されるパイプラインfg
でありbg
、これらのジョブ(、、Ctrl-Z)をこのシェル内から管理できます。ジョブは複数のプロセス/コマンドで構成できます。
私の質問は、シェルを含む元のシェルが終了すると、これらのジョブはどうなるのですか?huponexitが設定されていないため、シェルの終了後もバックグラウンドプロセスが実行を続けるとします。
私がやったとしましょう:
$ run.sh | grep 'abc' &
[1] job_id
次に、このシェルを終了します。新しいシェルを入力して実行するjobs
と、何も表示されなくなります。しかし、私はps aux | grep run.sh
このプロセスが実行されていることを確認できます。またps aux | grep grep
、grep 'abc'
実行プロセスも実行して確認できます。
パイプライン全体のジョブIDを取得して、一度に終了できるようにする方法はありますか?または、元のシェルを終了したら、別のシェルとは別にすべてのプロセスを終了する必要がありますか?(私は後者を試しましたが、うまくいきますが、すべてのプロセスを追跡するのは面倒のようです。)