Bashでモニターモードをオフにする

Bashでモニターモードをオフにする

吹くmanset以下に説明するオプションはサブセクションにリストされています-m

モニターモード。ジョブ制御が有効になりました。このオプションは、それをサポートするシステムの対話型シェルに対してデフォルトで有効になっています(上記のタスク制御を参照)。バックグラウンドプロセスは別のプロセスグループで実行され、完了すると終了ステータスを含む行を印刷します。

(リンク先のページで検索するには、「モニターモード」で検索してください。

問題は、このモデルが可能かどうかです。効果的にBashセッション中に閉じる、実行する方法、予想される結果は何ですか?私はそれを試してみましたが、これまでの結果はありません。

私はこのコマンドを知っていますがset +m、その原因は何ですか?ジョブ制御を無効にしますか?タスク完了メッセージと終了メッセージを無音に設定しますか?

ベストアンサー1

set +mモニタモード(タスク制御とも呼ばれます)を無効にしますが、それほど効果がなく、ほとんど役に立つ効果ではありません。監視モードがオフの状態でバックグラウンドジョブが開始されると、そのジョブは適切ではなく、ジョブが終了、停止、またはfg再開bgされると、シェルはメッセージを印刷したりSIGCLDトラップを実行したりしません。

最も有用な違いは、監視モードのためにパイプラインが独自のシステムで実行されることです。プロセスグループ。これは、プロセスグループ全体を終了する場合に便利な考慮事項です。ウォッチドッグモードを無効にすると、シェルを終了するプロセスグループもそのサブプロセスを終了します。監視モードが有効になると、各パイプは独自のグループになり、グループは独立してシャットダウンできます。

bash-4.3$ セット-m
bash-4.3$ sleep1111&
[1]17526
bash-4.3$ セット+m
bash-4.3$ sleep2222&
[2]17527
bash-4.3$ ps -o pid,ppid,pgid,sid,cmd 17526 17527
  PID PPID PGID SID CMD
175261752517526  7773 睡眠 1111
1752717525 17525  7773睡眠2222

おすすめ記事