web-dev-qa-db-ja.com

以前のシェルからバックグラウンドジョブを回復するにはどうすればよいですか?

重複の可能性:
実行中のプロセスを否認し、それを新しい画面シェルに関連付けるにはどうすればよいですか?

長時間続くコマンドを起動しました。切断する必要があったので、終了する前にバックグラウンドで(CTRL + Zおよびbgを使用して)移動しました。

このようなもの:

$ my_command
***command is beeing executed and is taking a long time***
^Z
[1]+  Stopped                 my_command
$ bg
[1]+ my_command &
$ exit

再接続しましたが、プロセスリストにコマンドが表示されますが、fgで回復できません。

$ fg
-bash: fg: current: no such job

フォアグラウンドでジョブを回復するにはどうすればよいですか?

19
SamK

すでに何かを始めて、それをバックグラウンド化していて、新しい端末に接続する必要がある場合は、 reptyr を使用して再接続できます。 (manページは、コマンドを「実行中のプログラムを新しい端末に親に変更する」として要約しています。)

「jobs」コマンドに表示されない、または「fg」を使用してそれを前面に表示できないのは、これらのコマンドが実際にはシェルに組み込まれているためです。接続している端末から技術的にプロセスを切り離すわけではないため、シェルを終了すると、それらははずですも終了します(終了しようとしたときの警告)。

24
criswell