设想;
我已经通过 SSH 连接到一台机器,打开了一个新的屏幕会话,并启动了一个脚本。
几天后,我通过 SSH 返回到该计算机,重新连接屏幕会话并查看已生成的输出;我无法向后滚动输出。
据我所知,屏幕存储了一个“屏幕大小”的标准输出输出。如果我的脚本在 48 小时内生成了 100 行输出,我就看不到全部内容,只能看到最后 40 行左右。有没有办法让screen
我保持运行的脚本存储所有标准输出,这样我就可以通过它重新连接屏幕和 PgUp/PgDn,就像它是在我的本地计算机上运行的脚本一样?
也许screen
这不是最好的方法?是否有更好的方法可以在注销后让脚本在远程计算机上运行,并能够在以后重新附加到该进程并查看所有输出?
答案1
您可以简单地将输出存储在文件中
my_command > mylogfile
如果您想查看命令运行时发生的情况,可以tail
在第二个屏幕上使用:
tail -f mylogfile
您不仅能够看到整个输出,还能够对其进行处理(比较、搜索……)
编辑如果您不想使用,screen
可以随时使用nohup
并关闭会话
nohup my_command > mylogfile &
答案2
您还可以在启动屏幕时使用参数 -L 打开输出日志记录,方法是:
screen -L -S <screen_name>
这将在您通过上述命令启动屏幕的目录中创建一个名为 screenlog.0 的日志文件。
要查看 screenlog.0,请使用 cat (而不是 vi)参考文献。
cat screenlog.0
答案3
Screen 确实保留了过去输出行的日志;它在屏幕文档中称为“回滚历史缓冲区”。
要向后滚动导航,请按C-a ESC
(copy
)。您可以使用箭头和PgUp/PgDn键进行导航,以及其他键搜索和复制文本。按此键ESC
退出回滚/复制模式。
默认情况下,Screen 仅保留 100 行的值。放一个defscrollback
您的指令.screenrc
更改此数字。
如果您想要脚本的完整日志,请将其保存在文件中。在 Screen 内运行它,以便能够连接回父 shell,并轻松查看脚本是否仍在运行、挂起和重新启动等。或者将其分叉和nohup
。要在日志文件增长时对其进行监控,请使用tail -f
.
答案4
如果您想在屏幕上看到输出并记录它,那么只需将其tee
通过管道传递给您的日志名称作为参数即可。