プロセスをバックグラウンドとフォアグラウンドに送信するにはどうすればいいですか?

プロセスをバックグラウンドとフォアグラウンドに送信するにはどうすればいいですか?

実行するとping google.com &、プロセスはバックグラウンドになり、ping の詳細が表示され続けます。他のコマンドでターミナルを使用することはできますが、ping からの出力と他のコマンドからの出力が混在します (これは問題ではありません)。ただし、この ping プロセスを終了することはできません。

そのためには、フォアグラウンドに移動してから、Ctrl + C か何かを押します。 を使用してみましたが、それでも機能しませんでした。では、 ping コマンドの最後にリターン キーを押した後、フォアグラウンドに戻すにはfgどうすればよいですか?ping google.com &

答え1

fgはジョブをフォアグラウンドにする正しいコマンドですが、複数のジョブが実行されている場合はジョブ番号を指定する必要があります。 のみを入力するとfg、最後にバックグラウンドになったジョブ (シェルによって現在のジョブとみなされる) がフォアグラウンドになります。

現在の求人情報を取得:

$ jobs
[1]+     ping google.com &

番号を指定してジョブをフォアグラウンドにします:

fg %1

コマンドは実行中のプロセスからの出力によって分割される場合がありますが、それでも機能するため、中断は無視できます。

次にctrl+を押してcプロセスを中断して停止します

コメントで述べたように、ジョブ番号でシグナルを送信することもできます。たとえば、kill %1

&完全を期すために、プロセスの呼び出し時にを使用しなかった場合は、まずctrl+で停止してzから次のように入力することで、プロセスをバックグラウンドに送ることができます。bg

関連情報