bg コマンドはプロセスをバックグラウンドに送信しません。

bg コマンドはプロセスをバックグラウンドに送信しません。

ctrl-zを使用してプロセスを一時停止し、bgコマンドを使用してバックグラウンドで送信しました。残念ながら、プロセスはバックグラウンドで送信されず、フォアグラウンドで実行されているように見えます。その後、もう一度Ctrl-Zを押して再び一時停止します。残念ながら、キーの組み合わせは応答しなくなり、プロセスは進行中です。さらに悪いことは、コマンドがfor多くのプロジェクトのループであるということです。 Ctrl-Cを押すと、最後の反復まで次の反復で操作が再開されます。

macOSのiTerm内のtmuxで実行されます。

答え1

説明によると、このbgコマンドは機能します。それ以外の場合、ctrl-z と ctrl-c は引き続き機能します。

プロセスがバックグラウンドにあっても、まだ出力を送信できないという意味ではありません。これを見たくない場合は、実行しstty tostopてバックグラウンドジョブが出力を送信しようとすると停止し、fg必要に応じてフォアグラウンド()で続行できます。

このようにバックグラウンドで騒々しいプロセスが実行されている場合は、Enterキーを数回押してもまだシェルプロンプトが表示されることがあります。次のようないくつかの方法でこの状況を解決できます。

  • 盲目的にkillコマンドを入力して殺すことができます。
  • stty tostop上記のように盲目的に入力できます。
  • 入力してfg前景に戻すことができます(2つ以上ない場合はエラーが発生したいと思います)。その後、ctrl-zを使用して停止するか、ctrl-cを使用して終了できます。
  • グラフィカル環境またはターミナルマルチプレクサ(tmuxなど)にある場合は、別のウィンドウを開き、ps問題のあるプロセスを使用または検索してtopそこからシャットダウンできます。

答え2

テキストウィンドウコマンド「jobs」は、cntl-Zによって停止されたジョブを報告します。 「fg#」と「kill#」(ここで#はコマンドによって報告されたジョブ番号)は、選択したジョブをfgにインポートするか、#実行中の進行を終了します。 jobs コマンドは sh、csh、bash に適用できます。プログラムを終了するよりも「fg」を使用してプログラムを終了する方が良いです。

これは機能しません:「追加」テキストファイル、.cなどのテキストファイルを編集するには、さらに表示するには単一のvコマンドを入力します。 「vim」編集セッションがcntl-Zの場合、端末は中断され、「more」コマンドと「vim」を別のウィンドウで終了する必要があります。他のcntl-Z、fg、kill、ls、psなどのコマンドは、停止した端末では機能しません。

関連情報