如何强制“screen -L”覆盖日志?

如何强制“screen -L”覆盖日志?

我想在后台运行一些长时间的计算作业。我选择screen。但是我发现屏幕不接受重定向。例如

screen -dmS name ls>ls.dat

不会生成ls.dat.

幸运的是,screen -L会将屏幕的日志输出到文件中。但是,它的作用是附加到以前的日志文件,即使我pkill screen启动一个全新的屏幕也是如此。

有没有办法在启动新屏幕时强制它覆盖以前的日志文件?

答案1

我不相信你可以强制屏幕覆盖日志。screenlog.%n默认情况下,它记录到%n屏幕窗口编号(因此每个窗口都有自己的日志)。如果该文件存在,则会附加到该文件。

但是,您可以告诉screen使用不同的文件名,包括时间戳,这样您每次都会获得一个新的日志文件,但随后您需要管理旧日志。

.screenrc可以输入以下行,

logfile /path/to/log/screenlog-%n-%Y%m%d-%c:%s

创建包含窗口号 ( %n) 以及年、月、日和时间的日志文件。

或者,您可以创建一个bash别名,在运行 screen 之前删除日志文件,例如,

alias screen='rm /path/to/log; screen'

如果你想影响screen当前目录中的日志文件,只需/path/to/log/从上面的命令中删除即可。

最后,根据您想要实现的目标,Linux 工具script可能比仅仅登录更有用screenman script了解更多信息。

相关内容