プロセスをバックグラウンドとフォアグラウンドに送信する方法は?


16

その場合ping google.com &、プロセスはバックグラウンドに移行し、pingの詳細を表示し続けます。私はまだ他のコマンドで端末を使用できますが、pingからの出力と他のコマンドからの出力は混同されます(これは問題ではありません)が、このpingプロセスをまったく終了できません。

そのために、私はそれをフォアグラウンドに持って行き、次にctrl + cまたは何かを押したいです。を使用してみましたfgが、機能しませんでした。それではping google.com &、pingコマンドの最後にリターンキーを押した後、フォアグラウンドに戻るにはどうすればよいですか?


2
あなたが実際に解決したい問題は、バックグラウンドジョブを殺しているようです。前面に持ってくる必要はありません。を使用jobsしてjid、バックグラウンドプロセスのジョブIDを検索し、kill %jidそれを強制終了します。
ガーデンヘッド

回答:


30

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

現在の求人を取得:

$ jobs
[1]+     ping google.com &

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

fg %1

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

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

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

完全&を期すために、プロセスの呼び出し時にを使用しなかった場合は、最初にctrl+ zでフリーズし、次に入力することでバックグラウンドに送信できます。bg


1
fg少なくともバックグラウンドジョブが1つしかない場合は、単に引数なしでも機能するようです。
セドリックライヘンバッハ

1
@CedricReichenbachが編集しました!
ザンナ

-2

質問に答えるために、すなわち 、プロセスの出力をバックグラウンドとフォアグラウンドに送信するにはどうすればよいですか?teeコマンドは:

コンピューティングでは、teeはコマンドラインインタープリター(シェル)のコマンドであり、標準ストリームを使用して標準入力を読み取り、標準出力と1つ以上のファイルの両方に書き込み、入力を効果的に複製します。 https://en.wikipedia.org/wiki/Tee_(command)


5
あなたは...ここで何かを誤解している
バイト司令
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.