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

デタッチされたプロセスに端末を接続するにはどうすればよいですか?

はい、そうです。まず、パイプを作成します:mkfifo /tmp/fifo .gdb を使用してプロセスにアタッチします:gdb -p PID

次に標準入力を閉じます:call close (0);もう一度開く:call open ("/tmp/fifo", 0600)

最後に、(gdb がハングする可能性があるため、別の端末から) 書き込みます:

echo blah > /tmp/fifo


元の端末にアクセスできなくなったら...

reptyr https://serverfault.com/a/284795/187998 を参照してください

そこからの引用:

まさにそれを行う reptyr を見てください。 github ページにすべての情報があります。

<ブロック引用>

reptyr - プログラムを「re-ptying」するためのツール

reptyr は、既存の実行中のプログラムを新しい端末に接続するためのユーティリティです。 ssh 経由で実行中のプロセスを開始しましたが、終了する必要があり、中断したくありませんか?画面を起動し、usereptyr を取得してから、ssh セッションを終了してホームに向かいます。

使用法

Reptyr PID

"reptyr PID" は、ID PID を持つプロセスを取得し、現在の端末に接続します。

アタッチ後、プロセスは ^C と ^Z を含む新しいターミナルから入力を受け取り、新しいターミナルに出力を書き込みます。シェルにパッチを当てずに妥当な方法で修正することは不可能です。)


できないと確信しています。

ps x で確認 .プロセスに ? がある場合 tty の制御として 、これ以上入力を送信できません。

9942 ?        S      0:00 tail -F /var/log/messages
9947 pts/1    S      0:00 tail -F /var/log/messages

この例では、入力を 9947 に送信できます。 echo "test" > /dev/pts/1 のようなことをする .もう一方のプロセス (9942 ) に到達できません。

次回は、この状況を回避するために screen または tmux を使用できます。


Linux
  1. ターミナルが閉じても存続するコマンドを実行するにはどうすればよいですか?

  2. Rsync プロセスをバックグラウンドで実行する方法

  3. ターミナルでHZを確認するには?

  1. ゾンビプロセスを強制終了する方法

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

  3. プロセスの環境変数を読み取る方法

  1. Linuxでゾンビプロセスを強制終了する方法

  2. Linuxコマンドをバックグラウンドで起動し、ターミナルでプロセスをデタッチする方法

  3. Linuxにvtopをインストールする方法