【问题标题】:Cant start linux "screen" with logging to specific output file无法通过记录到特定输出文件来启动 linux“屏幕”
【发布时间】:2026-01-17 15:10:01
【问题描述】:

我有一个问题,我想在屏幕会话开始时启用它的日志记录,然后将日志保存到特定文件。 到目前为止,我所拥有的是:

screen -AmdSL cod2war /home/cod2server/scripts/service_28969.sh

service_28969.sh 是一个shell 脚本,它将调用其他产生输出的脚本。 例如,我启动了多个不同名称的屏幕会话

screen -AmdSL cod2sd /home/cod2server/scripts/service_28962.sh

-L 启用以screen's man 表示的日志记录,并将输出安全保存在一个名为“screenlog.0”的文件中,现在因为我有多个这些屏幕,只有其中一个会生成保存在该日志文件中的输出(我在该文件夹中找不到其他 'screenlog.*' 文件)。

我想使用同一手册页中的 -Logfile "file" 选项,但它对我不起作用,我无法找出我做错了什么..

screen -Logfile cod2sd.log -AmdS cod2sd /home/u268450/cod2server/scripts/service_28962.sh

会产生以下错误:

Use: screen [-opts] [cmd [args]]
 or: screen -r [host.tty]

Options:
[...]
Error: Unknown option Logfile

screen -AmdS cod2sd /home/u268450/cod2server/scripts/service_28962.sh -Logfile cod2sd.log

将运行而不会出现任何错误并启动屏幕但根本没有日志记录..

【问题讨论】:

  • 我遇到了类似的问题,但我需要启动很多命名屏幕,理想情况下每个屏幕都有不同的日志文件,所以我不能使用 .screenrc,你有没有解决这个问题?
  • 不幸的是:没有

标签: gnu-screen


【解决方案1】:

您可以在默认启动 ~/.screenrc 文件中使用类似的行指定日志文件

logfile mylog.log

要从命令行执行此操作,您可以创建一个文件mystartup 来保存上述行,然后使用选项-c mystartup 告诉屏幕读取此文件以进行设置而不是默认设置。如果您还需要读取~/.screenrc,您可以将source 命令添加到您的启动文件中。最终结果如下所示:

echo 'logfile mylog.log
source ~/.screenrc' >mystartup
screen -AmdSL cod2war -c mystartup /home/cod2server/scripts/service_28969.sh

【讨论】:

    【解决方案2】:

    这对我有用:

    screen -L -Logfile /Logs/Screen/`date +%Y%m%d`_screen.log
    

    我检查的配置:

    screen version 4.08.00 (GNU) 05-Feb-20 on FreeBSD 12.2
    and 
    version 4.06.02 (GNU) 23-Oct-17 on Debian GNU/Linux 10 (buster)
    and
    version 4.00.03 (FAU) 23-Oct-06 on  Mac OS X 10.9.5.
    

    【讨论】:

      最近更新 更多