我想在后台运行一些长时间的计算作业。我选择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
可能比仅仅登录更有用screen
。 man script
了解更多信息。