如何将screen的日志保存到文件中
前言
平时会玩玩儿求生之路,搭了服务器,一直都是使用的screen来保持服务端挂起,但是从来没管过日志的问题。
最近发现一些插件是会在终端打印日志的,但是我不可能一直盯着screen终端啊,还是得保存在文件中,在这里记录下。
开始
先看看我原来的命令,就很空,什么也没有,直接使用screen挂了个求生之路启动命令
1 | screen -S left4dead2 bash /opt/game/steam/Left4Dead2/start.sh |
下面我们进行改造
screen命令
首先,我们改下screen的挂起命令,加上一些参数
1 | screen -L -Logfile "/opt/logs/l4d2/l4d2_log_$(date +%Y%m%d_%H%M%S).log" -S left4dead2 -t l4d2_server bash /opt/game/steam/Left4Dead2/start.sh |
命令参数解析表
| 参数 | 说明 |
|---|---|
-L | 启用日志记录功能。 |
-Logfile "/opt/game/steam/Left4Dead2/logs/..." | 关键参数:指定日志文件的完整路径和名称。使用 $(date +%Y%m%d_%H%M%S)可以为每次启动生成一个带时间戳的唯一日志文件,避免覆盖。 |
-S left4dead2 | 为您要创建的 screen会话指定一个名称,例如 left4dead2,方便后续管理。 |
-t l4d2_server | 为会话内的窗口指定一个名称,例如 l4d2_server。这在配置独立日志时很有用 |
日志保留
使用Linux的logrotate工具实现日志保留策略
创建日志目录
1 | mkdir -p /opt/logs/l4d2 |
创建logrotate配置文件
1 | sudo nano /etc/logrotate.d/l4d2-screen |
写入配置内容
1 | /opt/logs/l4d2/l4d2_log_*.log { |
配置项解释:
daily:可以替换为size 100M来按大小(如100MB)轮转。rotate 7:保留最近7个旧的日志文件。compress:轮转后的旧日志会自动压缩(.gz格式)以节省空间。delaycompress:延迟压缩,方便排查最新一个旧日志的问题。notifempty:如果日志文件为空,则不进行轮转。copytruncate:这是最关键的一项。它先复制当前日志文件,然后清空原文件,让screen继续写入到清空后的文件中,从而避免需要重启screen会话。
测试配置:
执行以下命令来测试配置是否正确,它会模拟轮转过程但不实际操作。
1 | sudo logrotate -d /etc/logrotate.d/l4d2-screen |
参考文档
知识来源于AI,我只是AI的实践者
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 InsectMk的个人空间!
评论


