別のbashセッションで実行されているプロセスの出力をどのように表示できますか?

別のbashセッションで実行されているプロセスの出力をどのように表示できますか?

ローカルで作業している間は、リモートコンピュータで実行されるスクリプトが残ります。同じユーザーとしてSSH経由でコンピュータに接続しますps

$ ps aux | grep ipcheck
myuser  18386  0.0  0.0  18460  3476 pts/0    S+   Dec14   1:11 /bin/bash ./ipchecker.sh

ローカルセッションからstdoutとして印刷します(./ipchecker.shローカルターミナルウィンドウで実行されており、リダイレクトなし、使用なしscreenなど)。

とにかく、SSHセッション内で(停止せずに)この実行コマンドの出力を表示できますか?

これまで私が見つけた最良の方法はを使用することです。strace -p 18386しかし、画面を横切って飛び回る数多くのテキストが表示され、あまりにも詳細です。出力を停止しstraceてからフィルタリングしてstdoutに印刷されたテキストを見つけることができますが、非常に長くて混乱し、停止すると明らかに何かを見逃す可能性があります。まるでローカルで作業しているかのように、リアルタイムでスクリプト出力を表示する方法を見つけたいと思います。

誰でもこれを改善できますか?確実な答えは、セッションなどでスクリプトをリダイレクトまたは再起動することですscreen。これは仕事にとって重要なスクリプトではないので、そうすることができます。むしろ面白い学習運動だと思いました。

ベストアンサー1

ファイルシステムを介して出力にアクセスできますproc

tail -f /proc/<pid>/fd/1

1=標準出力、2=標準エラー

(または@jmhostaletが言ったように:cat /proc/<pid>/fd/1tailが機能しない場合)

おすすめ記事