You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Screen重定向后无屏幕回显问题求助

让Screen会话和文件同时捕获PHP程序输出的方法

你的问题核心是:当把输出全量重定向到文件时,Screen会话的终端因为没有收到任何输出流,所以attach后显示空白。要实现同时输出到文件和Screen终端,用tee命令就能完美解决——它的作用就是将标准输出内容同时发送到指定文件和标准输出(也就是Screen的终端界面)。

修改后的命令

如果你只需要把标准输出(echo的内容)同时输出,用这个命令:

screen -d -m bash -c 'php forlog.php | tee -a ~/forlog.log'

如果需要把错误输出(比如PHP的警告、报错)也一并同时输出到文件和Screen,就把stderr合并到stdout后再交给tee处理:

screen -d -m bash -c 'php forlog.php 2>&1 | tee -a ~/forlog.log'

关键细节解释

  • tee -a:-a参数和你原来的>>效果一致,是追加写入文件,不会覆盖原有内容;如果用不带-a的tee,则会覆盖文件。
  • 2>&1:把标准错误流(stderr,编号2)重定向到标准输出流(stdout,编号1),这样所有输出(正常内容+错误信息)都会被tee处理,同时送到文件和Screen终端。
  • 为什么原来的命令看不到输出?因为你把stdout和stderr都直接重定向到了文件,Screen会话的终端没有接收到任何输出数据,自然显示空白。而tee相当于做了一个“分流”,让输出同时走两条路。

这个方案完全不需要用nohup,完美符合你的需求。attach到Screen会话后,你就能实时看到程序的输出,同时这些内容也会被写入到~/forlog.log文件里。

内容的提问来源于stack exchange,提问作者isaac.hazan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:35:35