SSHシェルで実行中のプログラムがあります。一時停止して、戻ってきたときに実行の一時停止を解除できるようにしたい。
私がそうすることを考えた1つの方法は、所有権をスクリーンシェルに譲渡し、そこで実行し続けることでした。
続行する別の方法はありますか?
承認された回答:
disown
を使用すると、シェルからプログラムの「所有権」を取り消すことができます。 組み込み:
# press Ctrl+Z to suspend the program
bg
disown
ただし、これはシェルにSIGHUP
を送信しないように指示するだけです。 シェルが終了したときにプログラムに通知します。プログラムは、通常、標準の入力、出力、およびエラーストリームとして、端末との接続を保持します。それらを別の端末に再接続する方法はありません。 (画面はウィンドウごとに端末をエミュレートすることで機能するため、プログラムは画面ウィンドウに添付されます。)
デバッガーでプログラムをアタッチすることにより(つまり、ptrace
を使用して、ファイル記述子を別のファイルに再アタッチすることができます。 )そしてopen
を呼び出すようにします 、dup
およびclose
。これを行うツールがいくつかあります。これはトリッキーなプロセスであり、代わりにプロセスをクラッシュさせることがあります。可能性は次のとおりです(実行中のプロセスを否認して新しい画面シェルに関連付けるにはどうすればよいですか?およびすでに開始されているプロセスをnohup /スクリーニングできますか?)への回答から収集されたリンク:
- グラブ(およびより野心的なクリオピッド)
- neercs
- リダイレクト
- reptyr
- retty