GNU/Linux >> Linux の 問題 >  >> Linux

Ssh –実行中のプロセスを破棄して新しいスクリーンシェルに関連付ける方法は?

SSHシェルで実行中のプログラムがあります。一時停止して、戻ってきたときに実行の一時停止を解除できるようにしたい。

私がそうすることを考えた1つの方法は、所有権をスクリーンシェルに譲渡し、そこで実行し続けることでした。

続行する別の方法はありますか?

承認された回答:

disownを使用すると、シェルからプログラムの「所有権」を取り消すことができます。 組み込み:

# press Ctrl+Z to suspend the program
bg
disown

ただし、これはシェルにSIGHUPを送信しないように指示するだけです。 シェルが終了したときにプログラムに通知します。プログラムは、通常、標準の入力、出力、およびエラーストリームとして、端末との接続を保持します。それらを別の端末に再接続する方法はありません。 (画面はウィンドウごとに端末をエミュレートすることで機能するため、プログラムは画面ウィンドウに添付されます。)

デバッガーでプログラムをアタッチすることにより(つまり、ptraceを使用して、ファイル記述子を別のファイルに再アタッチすることができます。 )そしてopenを呼び出すようにします 、dup およびclose 。これを行うツールがいくつかあります。これはトリッキーなプロセスであり、代わりにプロセスをクラッシュさせることがあります。可能性は次のとおりです(実行中のプロセスを否認して新しい画面シェルに関連付けるにはどうすればよいですか?およびすでに開始されているプロセスをnohup /スクリーニングできますか?)への回答から収集されたリンク:

  • グラブ(およびより野心的なクリオピッド)
  • neercs
  • リダイレクト
  • reptyr
  • retty

Linux
  1. SFTPを許可してSSHを禁止する方法は?

  2. Linuxで実行中のプロセスを再起動(またはリセット)する方法は?

  3. 実行中の画面セッションを一覧表示するには?

  1. ネストされたシェルを実行しているかどうかを確認するにはどうすればよいですか?

  2. EC2 ssh 壊れたパイプが実行中のプロセスを終了させる

  3. 実行中のプロセスを強制終了せずに ssh セッションを切り離すには?

  1. Bashでプログラミングする方法:構文とツール

  2. 切断後もリモートSSHセッションとプロセスを実行し続けるための5つの方法

  3. プロセスの pid を取得し、シェル スクリプトで kill -9 を呼び出す方法は?