2016-03-22 8 views
1

gnuスクリーン上でいくつかのコマンドを実行し、スクリーンに加わり、ハードコピーバッファーを見ることなく、私はpython appを書いています。特に、私は実行しています:Gnuスクリーン結合スクリーンなしのハードコピー

screen -dmS test 
screen -S test -p 0 -X stuff "ls$(printf \\r)" 
screen -S test -X hardcopy screenOutput.txt 

私はscreenOutput.txtを見ると、私は何も見ません。しかし

screen -dmS test 
screen -S test -p 0 -X stuff "ls$(printf \\r)" 
screen -r test 
(quit the screen with c-A c-D) 
screen -S test -X hardcopy screenOutput.txt 

は、その後、私はscreenOutput.txtで出力を参照してください、ハードコピーを実行し、その後、私は画面に参加した場合、および。

画面に参加することなく、ハードコピーをファイルに書き込む方法はありますか?

+0

関連:http://stackoverflow.com/questions/4807474/copying-gnu-screen-scrollback-buffer-to-file-extended-hardcopy –

+0

これはバージョン4.03.01で動作します。 4.00.03で作業しますか? – user1763510

+1

gitログを見ると、[2006年以降、ハードコピーの修正がいくつかありました](http://git.savannah.gnu.org/cgit/screen.git/log/?qt=grep&q=hardcopy)それで '4.00.03'では壊れてしまうかもしれません。あなたはソースを突き抜けて、偽のデータを書き込むのか、間違った経路をとるのかをチェックしたいかもしれません。 –

答えて

1

セッションにコマンドを送信する方法の例については、linux - Send command to detached screen and get the output - Unix & Linux Stack Exchangeを参照してください。適切な呼び出しの1つは、

screen -dmS test 
screen -S test -X hardcopy screenOutput.txt 

です。 -Xは、最初のコマンドオプションであるになります。-d/-r添付のセッションのみを検索するスイッチにはがあります。これはに従います(これは悪名高いものです)。この場合、それらはまったく必要ではありません。

screenv4.0.3でこれが動作しないこと(空白ファイルを作成)が確認され、同じ環境でv4.2.0以降で動作します。

広範な調査:

デバッグが根本的な原因は、fileio.c:472WriteFileであることを示していますfore(前面のウィンドウへのポインタ)が実際にNULLであるため、何も記述せずに機能を終了しますif (!fore) break;を。 これが修正された特定のコミットを特定できませんでしたが、それはの中のではないことを確認しました。この変数はコードベースの周囲のいくつかの場所に設定され、おおよそ同じ量の場所で、多くの場合割り当てに続くコードでNULLにリセットされます。だから、回避策の可能性は非常にスリムです。

私はここhardcopyが壊れている、あなたは(それが株式をオーバーライドするように、例えば/usr/localにバージョンをインストール)をアップグレードする必要があり、screenv4.0.3のそれを再確認します。

+0

最初の2つのコマンドを実行しても(-rを-Sに変更しても)、screenOutput.txtファイルには何も表示されません。 – user1763510

+0

@ user1763510答えのコードを使ったWFM。 'screen v4.03.01' –

+0

奇妙なことに、私はOSX 10.10.5です。あなたはLinux上にいますか?違いがないようです。 'Screen version 4.00.03' – user1763510

関連する問題