進行状況をSTDOUT
。STDOUT
grep
質問:プロセスを停止せずに他のプロセスに接続する方法はありますかSTDOUT
?
常にOS X 10.7.3のZSHにあるGNU画面で実行されます。
答え1
スマートな人がいます。ハッカー言及するここGDBを使用してプロセスに接続し、ファイルをdupx
これがこの機能を要約したものです。
~からdupx
マンページ:
Dupxは、実行中のプログラムのファイルを再マップする簡単なユーティリティです。 Bashなどのシェルでは、
>, < -
同様の構文を使用してプログラムの起動時に簡単に入力/出力/エラーリダイレクトを許可します。例:echo 'redirect this text' > /tmp/stdout
出力echo
を/tmp/stdout
。ただし、標準シェルは、開始されたプロセスの出力(または入力またはエラー)を再マッピング(リダイレクト)する機能を提供しません。 Dupxは
dup(2)
内部システムコールを使用してこの問題を解決しようとしますgdb(1)
。 Dupxは現在、gdb
スクリプト用の単純なシェルラッパーとして実装されています。
答え2
画面log
コマンド(!)を使用してください。
プロセスはすでにscreenセッションで実行されているので、そのウィンドウの出力を記録するようにscreenに指示するだけです。
スクリプトウィンドウに切り替えてC-a H録音します。
これで、次のことができます。
$ tail -f screenlog.2 | grep whatever
画面のマニュアルページから:
録音[オン|オフ]
現在のウィンドウの出力をウィンドウのメインディレクトリにある "screenlog.n"ファイルに書き込みを開始/停止します。ここで、nは現在のウィンドウの番号です。このファイル名は、「logfile」コマンドを使用して変更できます。引数が指定されない場合は、ロギング状態を切り替えます。ファイルがすでに存在する場合、セッションログはファイルの前の内容に追加されます。現在のコンテンツとロールバック履歴の内容はセッションログには含まれません。デフォルトは「オフ」です。