温馨提示×

为什么linux syslog为空

小樊
88
2026-07-02 00:54:07
栏目: 智能运维

Linux 的 syslog 为空,通常不是“没日志”,而是配置、服务或路径发生了变化。下面按最常见原因 → 排查方法给你一个系统性的说明。


一、最常见原因(按概率排序)

✅ 1. 你用的是 systemd 系统,但去看的是 /var/log/syslog

Ubuntu 16.04+、Debian 9+、CentOS 7+ 等系统中:

  • syslog 实际由 systemd-journald 管理
  • /var/log/syslog 可能不存在或为空
  • 日志在 journal

✅ 正确查看方式:

journalctl
journalctl -xe

查看某个服务:

journalctl -u sshd

✅ 2. rsyslog / syslog 服务没运行

检查服务状态

systemctl status rsyslog

如果没运行:

sudo systemctl start rsyslog
sudo systemctl enable rsyslog

✅ 3. rsyslog 被卸载或没安装

which rsyslogd

如果没有:

# Ubuntu / Debian
sudo apt install rsyslog

# CentOS / Rocky / Alma
sudo yum install rsyslog

✅ 4. syslog 路径变了(不同发行版)

系统 日志位置
Ubuntu / Debian /var/log/syslog
RHEL / CentOS 7+ /var/log/messages
容器 / 精简系统 可能完全没有

检查:

ls -lh /var/log/

✅ 5. 日志被轮转或清空

ls -lh /var/log/syslog

如果文件大小为 0,可能是:

  • logrotate 刚轮转
  • 手动清空
  • 磁盘满导致无法写入

✅ 6. 磁盘满了(非常常见)

df -h

如果 /var/ 100%:

du -sh /var/log/*

✅ 7. rsyslog 配置错误

检查配置:

rsyslogd -N1

常见错误:

  • 规则被注释
  • 输出路径错误
  • 权限问题

✅ 8. 容器 / WSL / 云服务器限制

Docker 容器

  • 默认没有 syslog
  • 日志打给 stdout

解决:

docker logs <container>

WSL

sudo service rsyslog start

二、快速自检清单(5 分钟定位)

# 1. 是否是 systemd
ps -p 1 -o comm=

# 2. rsyslog 是否在运行
systemctl status rsyslog

# 3. 文件是否存在
ls -lh /var/log/syslog /var/log/messages

# 4. journal 是否有日志
journalctl -n 20

# 5. 磁盘是否满了
df -h

三、一句话总结

90% 情况下:不是没日志,而是你没用对查看方式
systemd 系统优先用 journalctl
✅ 传统系统才看 /var/log/syslog


如果你愿意,可以直接把下面信息发我,我可以精确告诉你是哪一种情况

cat /etc/os-release
ps -p 1 -o comm=
ls -lh /var/log/
systemctl status rsyslog

0