長時間続くコマンドを起動しました。切断する必要があったので、終了する前にバックグラウンドで(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
フォアグラウンドでジョブを回復するにはどうすればよいですか?
すでに何かを始めて、それをバックグラウンド化していて、新しい端末に接続する必要がある場合は、 reptyr
を使用して再接続できます。 (man
ページは、コマンドを「実行中のプログラムを新しい端末に親に変更する」として要約しています。)
「jobs」コマンドに表示されない、または「fg」を使用してそれを前面に表示できないのは、これらのコマンドが実際にはシェルに組み込まれているためです。接続している端末から技術的にプロセスを切り離すわけではないため、シェルを終了すると、それらははずですも終了します(終了しようとしたときの警告)。