GNU画面:分離されたセッションを標準出力として印刷します。

GNU画面:分離されたセッションを標準出力として印刷します。

screen私は私のスタンドアロンGNUセッションの簡単な概要を提供したかっただけです。現在の内容をstdoutにダンプできますか?それはまるで

screen --print SESSION_NAME > file.txt

答え1

セッションの1つのウィンドウダンプ画面を使用すると、現在のウィンドウのscreen -X hardcopy /some/file画面ダンプを/some/file

次のコマンドを使用して特定のウィンドウをダンプできます。

screen -X at 3 hardcopy /some/file

これはすべて1つのファイルにあります。

screen -X eval 'hardcopy_append on' 'at \\# hardcopy /some/file'

ファイルをダンプするディレクトリを指定して、ウィンドウごとに1つのファイルをダンプすることもできます(指定しないと、ファイルが開始されたディレクトリscreenにダンプされます)。

screen -X eval 'hardcopydir /some/dir' 'at \\# hardcopy'

(という名前のファイルにダンプされますhardcopy.<n>

-hスクロールバッファを含めるオプションを参照してください。hardcopy

通常どおり、オプションをscreen使用して-Sコマンドを実行するセッションを指定します。 ⁣ ⁣ ⁣ ⁣

答え2

screen-Lセッションロギングを有効にするオプションから始めます。

screenまたは、一度実行したら、-を使用してセッション内のウィンドウのログをオンまたはオフにすることもできます。screenCTRLaH

ログは現在の作業ディレクトリに作成され、screenlog.XXは一意の番号である名前が付けられます。

ロギングが有効になると、ウィンドウリストの出力がL[フラグ]列に表示されます。

Num Name           Flags
  0 fedora         $(L)               
  1 sudo           $                                        
  2 fedora         $(L)                                                

答え3

名前付きパイプを使用すると、タイトル(質問ではない)が尋ねられたように標準出力に出力できます。

function screen_peek()
{
  # Create a random filename
  local pipe="$(mktemp -u)"
  # Crete a named pipe
  mkfifo "${pipe}"
  # Runs hardcopy in background, wrt bash (the client)
  screen -S "${1}" -X hardcopy "${pipe}"
  # Redirect pipe to stdout and remove trailing and leading blank lines
  cat "${pipe}" | sed -e '/./,$!d' -e :a -e '/^\n*$/{$d;N;};/\n$/ba'
  # Cleanup
  rm -f "${pipe}"
}

catBashの匿名パイプ(およびcoproc)はパイプを開いたままにしているため、スクリーンハードコピーダンプが完了したときにシャットダウン(EOF)は発生しません。匿名パイプ通信は、Pythonなどの他の言語の下位レベルの呼び出しから切り離す必要があります。

関連情報