温馨提示×

Debian日志为何丢失

小樊
50
2026-07-12 16:54:59
栏目: 智能运维

Debian 系统日志“丢失”或“看不到”,通常不是真的被删除了,而是日志系统、配置或查看方式发生了变化。下面按最常见原因给你系统梳理一下,并给出排查方法。


一、最常见原因(90% 都在这里)

1️⃣ Debian 默认使用 systemd-journald

现代 Debian(8+,尤其是 10/11/12)不再把日志直接写到 /var/log/messages/var/log/syslog

而是:

  • 日志由 systemd-journald 管理
  • 默认 不自动持久化
  • 重启后部分日志会丢失

✅ 正确查看方式:

journalctl
journalctl -xe
journalctl -u sshd

2️⃣ /var/log 下日志文件不存在

你可能发现:

ls /var/log/syslog
ls /var/log/messages

不存在或为空。

原因:

  • 没安装 rsyslog
  • 或 rsyslog 被禁用

✅ 检查:

systemctl status rsyslog

✅ 安装(如果你需要传统日志):

sudo apt install rsyslog
sudo systemctl enable --now rsyslog

3️⃣ journal 日志未持久化(重启即丢)

默认情况下:

  • journal 存在内存中
  • 重启后 早期日志消失

✅ 检查是否持久化:

ls /var/log/journal

如果没有这个目录,说明未持久化

✅ 开启持久化:

sudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald

以后日志会保存在磁盘上。


二、日志被“轮转”或清理了

4️⃣ logrotate 自动清理

Debian 默认会轮转并删除旧日志:

/etc/logrotate.conf
/etc/logrotate.d/

常见策略:

  • 保留 4 周
  • 压缩
  • 删除旧文件

✅ 查看配置:

cat /etc/logrotate.conf

5️⃣ 磁盘空间不足(日志被直接丢弃)

如果磁盘满了:

  • journald 会丢弃日志
  • rsyslog 可能停止写入

✅ 检查:

df -h
journalctl --disk-usage

✅ 清理旧 journal:

sudo journalctl --vacuum-size=100M

三、你“看错地方”了(非常常见)

6️⃣ 服务日志不在 syslog

很多服务日志:

  • 只进 journal
  • 不写 /var/log

例如:

journalctl -u nginx
journalctl -u docker
journalctl -u sshd

而不是:

/var/log/nginx.log ❌

四、权限问题(你没权限看)

7️⃣ 普通用户看不到部分日志

sudo journalctl

或:

sudo cat /var/log/syslog

五、系统崩溃 / 非正常关机

  • 日志还没来得及写盘
  • journal 在内存中直接丢失

➡️ 这是正常现象


快速自检清单(照着做)

# 1. 看 journal 日志
journalctl -xe

# 2. 是否安装 rsyslog
systemctl status rsyslog

# 3. journal 是否持久化
ls /var/log/journal

# 4. 磁盘是否满
df -h

# 5. 查看某个服务日志
journalctl -u 服务名

如果你愿意,我可以帮你精准定位

你可以直接告诉我:

  1. Debian 版本(cat /etc/debian_version
  2. 系统日志 / 某个服务日志 / 启动日志 丢失?
  3. 重启后丢失,还是 一直没看到

我可以一步一步帮你查到根因。

0