如何将`screen`内的输出输出到脚本中?

1ac*_*ace 36 bash logs gnu-screen recording

我有一个screen正在运行的实例,我需要在 中执行一些代码screen,然后将结果输出到我的脚本中。

第一部分很简单,我只是screen -S session_name -X eval 'stuff "$cmd"\015'
(我修改了我在脚本中找到的一行

第二部分,获取输出,比较棘手。无论大小如何,我怎样才能获得整个输出?

N J*_*N J 34

你可以先screen-L选择。这将导致 screenscreenlog.n在当前工作目录中创建一个文件(n 部分是数字,从零开始)。

在你的情况下,这看起来像: screen -S session_name -L -X eval 'stuff "$cmd"\015'

只要您记得事后清理,这应该与您所追求的相符。

对于日志的最后一行,可以使用 轻松获取tail -1 screenlog.0,或者可以根据需要解析整个日志。


ric*_*ali 25

将来可能会有帮助的另一个细微差别:如果您在屏幕会话中,您可以交互地要求创建日志文件。按ctrl- a H(Control-A 后跟大写 H)要求屏幕开始将您所在的任何窗口转储到日志文件中。

  • 不知道是不是因为更新的版本,但我的“man screen”说,我必须输入 CA H,而不是 H 的 Control。遗憾的是,这不会捕获以前的日志。 (5认同)
  • 请更新 CA H 的答案。未来的搜索者可能会被误导并错过正确的答案。 (3认同)
  • 你是对的!生成日志文件是CA H。请注意,它是大写的 H(小写的 h 仅生成当前屏幕的硬拷贝)。 (2认同)