web-dev-qa-db-ja.com

`screen`内の出力をスクリプトに出力する方法は?

私はscreenインスタンスを実行しており、screen内でコードを実行して、スクリプトに結果を取得する必要があります。

最初の部分は非常に簡単です。私はscreen -S session_name -X eval 'stuff "$cmd"\015'
(変更しました スクリプトで見つけた行

出力を取得する2番目の部分はよりトリッキーです。サイズに関係なく、どのようにして出力全体を取得できますか?

34
1ace

-Lオプションを使用してscreenを開始できます。これにより、現在の作業ディレクトリにscreenがファイルscreenlog.n(nの部分はゼロから始まる数値)を作成します。

あなたの場合、これは次のようになります:screen -S session_name -L -X eval 'stuff "$cmd"\015'

後でクリーンアップすることを覚えている限り、これはあなたが後の状態と一致するはずです。

ログの最後の行については、tail -1 screenlog.0を使用して簡単に取得できます。または、ログ全体を必要に応じて解析できます。

30
N J

将来役立つかもしれないもう1つのニュアンス:スクリーンセッションにいる場合は、対話的にログファイルの作成を要求できます。押す ctrl-aH (Control-Aに続けて大文字のH)画面にログファイルへのウィンドウのダンプを開始するよう要求します。

24
rickumali