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

SSH连接邮件服务器后,如何在Screen会话中持续查看轮转日志?

解决日志轮转后tail -f停止跟踪的问题

这个问题我之前维护邮件服务器时也碰到过!日志轮转(logrotate)触发后,普通的tail -f就跟着旧的日志文件走了,自然就停更了。给你几个靠谱的解决办法,按推荐程度排序:

1. 直接换成tail -F(大写F)

这是最简单的解决方案,把你的命令从:

tail -f /var/log/syslog

改成:

tail -F /var/log/syslog

tail -F和小写-f的区别在于,它会同时跟踪文件名和文件inode。当logrotate把旧的syslog重命名归档、新建同名的日志文件后,tail -F会自动检测到文件名对应的inode变化,重新打开新的日志文件继续输出,完美适配轮转场景。

2. 如果是systemd发行版,用journalctl实时跟踪

现在大部分Linux发行版都用systemd管理系统日志,直接用journalctl的实时跟踪功能更灵活:

journalctl -f

它本身就内置了对日志轮转的处理,不会出现停更的问题。如果你只想看邮件服务器相关的日志,还可以过滤特定服务,比如Postfix:

journalctl -f -u postfix.service

3. 调整logrotate配置(可选,不推荐首选)

如果不想换命令,也可以修改syslog的logrotate配置文件(一般在/etc/logrotate.d/syslog或/etc/logrotate.conf),给对应的日志条目添加copytruncate选项:

/var/log/syslog {
    daily
    rotate 7
    copytruncate  # 添加这一行
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

copytruncate的作用是先复制旧日志内容到归档文件,再清空原文件,而不是删除原文件后新建。这样原文件的inode不变,tail -f就能继续跟踪。不过这个方法有个小风险:复制和清空的间隙可能会丢失少量日志,所以不如前两个方法可靠。

优先推荐前两个方案,简单又稳定,完全能满足你在Screen窗口持续查看日志的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:12:22