在屏幕上启动程序时记录标准输出和标准错误

Log stdout & stderr when program is started in screen

我成功地将程序输出的 stdout/stderr 记录添加到文件中。

但是当我从 screen 启动程序时,日志文件是空的,因为它只记录来自 screen 的消息,而不是来自 运行ning 在后台 [=] 10=].

请用任何方法解决这个问题或其他解决方案,这样我就可以 运行 一个带有 stdout/stderr 日志记录的可分离程序,类似于 screen?

当前启动行:

screen -A -m -d -S test ./testserver -config=config.cfg -filepatching -autoinit 1>>"./log_$(date +%s).txt" 2>> "./log_$(date +%s).txt"

问题是,您需要封装您的命令。现在 1>>"./log_$(date +%s).txt" 2>>"./log_$(date +%s).txt" 适用于屏幕本身,nit 执行的程序。

试试这个:

screen -A -m -d -S test './testserver -config=config.cfg -filepatching -autoinit 1>>"./log_$(date +%s).txt" 2>>"./log_$(date +%s).txt"'

或者这样:

screen -A -m -d -S test /bin/sh -c './testserver -config=config.cfg -filepatching -autoinit 1>>"./log_$(date +%s).txt" 2>>"./log_$(date +%s).txt"'