「screen」内の出力をスクリプトに取得する方法は?


33

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

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

出力を取得する2番目の部分は、より複雑です。サイズにかかわらず、出力全体を取得するにはどうすればよいですか?



ありがとう:) 2番目のリンクは、最初のコマンドがなぜstuffそうでなければならないのかを説明しました。
11

回答:


29

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

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

後でクリーンアップすることを忘れない限り、これはあなたが望んでいるものと一致するはずです。

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


しかし一つのこと、: screen。私が与えたコマンドだけでコマンドを送信することでした起動するにはscreen、私が使用screen -dmS name program;-)
1ace

22

将来的に役立つ可能性があるもう1つのニュアンス:スクリーンセッションを使用している場合は、作成するログファイルを対話形式で要求できます。プレスctrl- a H(コントロール-Aは資本Hが続く)ログファイルにしているものは何でもウィンドウダンプを開始するには、画面を依頼します。


5
新しいバージョンが原因であるかどうかはわかりman screenませんが、以前のログをキャプチャしないのは、HのコントロールなしでCA Hと入力する必要があるというだけです。
マトマーボン

2
あなたが正しい!ログファイルを生成するのはCA Hです。大文字のHであることに注意してください(小文字のhは、現在の画面のハードコピーのみを生成します)。
リクマリ

3
CA Hへの回答を更新してください。将来の検索者は誤解を招き、正しい回答を見逃す可能性があります。
gc5 14

スクリプトを介してコマンドを送信する方法を知っている人はいますか?送信control + aのように、1秒後にHを送信します。
ザックW.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.