ジョブに対してfg
コマンドを使用するのと同様の方法でPIDを使用して、既に実行中のプロセスに端末を接続することは可能ですか?
そのプロセスの標準ファイル記述子を取得できます。 stdout
:
tail -f /proc/<pid>/fd/1
ここにはいくつかのオプションがあります。 1つは、コマンドの出力をファイルにリダイレクトし、tail
を使用して、そのファイルに追加された新しい行をリアルタイムで表示することです。
別のオプションは、screen
内でプログラムを起動することです。これは、一種のテキストベースのターミナルアプリケーションです。 Screenセッションはアタッチおよびデタッチできますが、名目上は同じユーザーのみが使用することを意図しているため、ユーザー間でセッションを共有する場合。
それ以外の場合は、プロセスをトレースし、strace
を使用してプロセスを確認できます。
strace -e trace=open -p 22254 -s 80 -o output.txt
-p PID
:プロセスID PIDでプロセスに接続し、トレースを開始します。-s SIZE
:印刷する最大文字列サイズを指定します(デフォルトは32です)。-o filename
:トレース出力を画面(stderr)ではなくファイルfilenameに書き込みます。以下に示すこれらのコマンドを使用して、実行中のプロセスを別の端末に接続できます。
retty
(マニュアルページ: retty )reptyr
screen
例:
screen -S PID
retty $(pgrep PID)
reptyr PID