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

为何tee命令无法捕获Valve游戏服务器的STDOUT输出?

解决Valve游戏服务器日志捕获不全/为空的问题

你遇到的情况是因为程序把日志拆分到了**标准输出(STDOUT)和标准错误输出(STDERR)**两个通道,而你原来的命令只捕获了STDOUT,同时还可能存在输出缓冲导致内容没及时写入文件的问题。

解决方案1:同时捕获STDERR和STDOUT

把命令改成这样,就能让所有终端显示的日志都通过tee写入文件:

./srcds_linux -game tf +map cp_dustbowl -maxplayers 24 2>&1 | tee -a mylogfile.txt

这里的2>&1是把STDERR(文件描述符2)的内容重定向到STDOUT(文件描述符1),这样tee就能同时处理两个通道的输出,终端实时显示的同时,所有内容都会追加到日志文件里。

解决方案2:强制行缓冲(解决部分内容延迟写入的问题)

如果改了上面的命令后,还是有部分日志在服务器关闭后才写入文件,可以用stdbuf强制程序使用行缓冲,确保日志实时刷到文件:

stdbuf -oL ./srcds_linux -game tf +map cp_dustbowl -maxplayers 24 2>&1 | tee -a mylogfile.txt

-oL参数让程序的STDOUT使用行缓冲模式,每输出一行就立刻写入文件,避免缓冲积累导致的内容延迟。

内容的提问来源于stack exchange,提问作者madmonkey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:55:58