他のシェルインスタンスのサブシェルでbgを介して送信されたジョブを終了するには?

他のシェルインスタンスのサブシェルでbgを介して送信されたジョブを終了するには?

ダミーの例として、端末タブでbashコマンドを実行するとします。

$: sleep 1000 &

次に、別のタブで「すべてのバックグラウンドジョブを終了する」コマンドを実行します。

$: jobs -p | xargs -a kill

それ以外は何も起こりません。または、より良い方法:どのようなコンテキストでユーザーが<some-job> &開始したすべてのタスクを一覧表示できますか?

ベストアンサー1

このjobsコマンドはシェル組み込みであるため、現在のシェルインスタンス化にのみ適用されます。具体的には、Bashマニュアルは以下を説明していますjobs

-p プロセスIDのみを一覧表示業務プロセスチーム長

(強調します。)

を実行すると、jobs -l他のシェルのバックグラウンドで実行されているスリープも表示されないことがわかります。

コマンドのリストみんな流れはですps。パラメータ構文は少しバロックである可能性があるため、自分で確認することをおman ps勧めします。私自身の場合、通常、次のいずれかを使用します。

ps aux
ps axjf

1つはすべてのプロセスのリストを提供し、もう1つは依存関係ツリー形式でソートします。pgrep名前に一致する特定のプロセスを見つける方法でこれを試すこともできます。

注意してセキュリティ上の問題がある環境で作業している場合は、rootユーザーにもプロセスを隠す秘密の方法があることに注意してください。例をご覧ください。https://github.com/gianlucaborello/libprocesshider

おすすめ記事