これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド reptyr です。
プログラム:
NAME
reptyr - 実行中のプログラムを新しい端末に再親化します
SYNOPSIS
レプティル PID
レプティル -l|-L [指示 [引数]]
DESCRIPTION
レプティル 既存の実行中のプログラムを取得し、それを新しいプログラムにアタッチするためのユーティリティです。
ターミナル。 SSH 経由で長時間実行プロセスを開始したが、終了する必要があり、終了したくない
それを中断しますか? 画面を起動するだけで、 レプティル それを取得してから ssh セッションを強制終了します
そして家に向かいます。
レプティル を使用してターゲットプログラムにアタッチすることで機能します ptrace(2)、関連ファイルのリダイレクト
記述子、およびプログラムの制御端末の変更 (「 TTY(4)) これで最後です
細部に至るまで レプティル などの代替手段よりもはるかにうまく機能します レッティとします。
プログラムを接続すると、プログラムがバックグラウンドまたは一時停止しているように見えます
起動元のシェルに戻ります (シェルによって異なります)。 最大限の安全性を確保するには、次のことを実行してください。
背景; 勘当する
古いシェルではプログラムとの関連付けを削除しますが、 レプティル しようとします
実行せずにシェルを閉じた場合でも、ターゲット プログラムが実行されたままであることを確認します。
そう。
OPTIONS
-T
別のアタッチ モード「TTY スティール」を使用します。 このモードでは、 レプティル ないでしょう
ptrace(2) ターゲットプロセスですが、ターミナルエミュレータの検出を試みます
そのプロセスの pty を取得し、pty のマスター エンドを盗みます。 このモードはさらに
多くの状況において信頼性と柔軟性を備えています (たとえば、すべての接続を取り付けることができます)。
単一のプロセスではなく、tty 上のプロセス)。 ただし、デメリットとしては、
の子供たち sshd(8) 経由で添付することはできません -T ない限り、 レプティル root として実行されます。 見る
詳細は ⟨https://blog.nelhage.com/2014/08/new-reptyr-feature-tty-stealing/⟩
tty 盗用に関する情報。
-l、 -L [指示 [引数]]
新しいプロセスに接続する代わりに、新しい PTY ペアを作成し、マスター側をプロキシします。
現在の端末に送信し、スレーブ pty の名前を出力します。 これは可能です
たとえばに渡される gdbの セッションに 劣った-tty オプションを選択します。
オプションの場合 COMMAND ARGS とともに渡されます -l、 そのコマンド
の子として処刑される レプティル REPTYR_PTY 環境変数セット
奴隷ptyの名前に。 もし -L 代わりにが使用されます -l、 次に、FDS 0 ~ 2
子もスレーブを指すようにリダイレクトされ、子は
制御端末としてのスレーブとの新しいセッション。
-s
デフォルトでは、reptyr は接続されていたターゲット内のファイル記述子を移動します。
ターゲットの制御端末に接続して、新しい端末をポイントします。 の -s オプション
これにより、reptyr はファイル記述子 0、1、および 2 を無条件に添付します。
ターゲットに制御端末がないか、ターゲットに接続されていない場合でも、
端末。
-v
のバージョンを印刷する レプティル 終了します。
-h
使用法メッセージを出力して終了します。
-V
実行中に詳細なデバッグ出力を出力します。
注意事項
レプティル に依存 ptrace(2) リモートプログラムに付加するシステムコール。 Ubuntu の場合
Maverick 以降では、セキュリティ上の理由から、この機能はデフォルトで無効になっています。 あなたはできる
次のようにして一時的に有効にします
# エコー0 > /proc/sys/kernel/yama/ptrace_scope
rootとして、またはファイルを編集して永続的に /etc/sysctl.d/10-ptrace.conf、 これも
この設定に関する詳細情報が含まれています。
onworks.net サービスを使用してオンラインで reptyr を使用する