在 Ubuntu 上 syslog 不写日志 通常有下面几类原因,按出现频率从高到低说明,并给出排查方法。
Ubuntu 20.04 / 22.04 / 24.04 默认 不是传统的 syslogd,而是:
rsyslogsystemd-journald先确认服务状态:
systemctl status rsyslog
systemctl status systemd-journald
如果 rsyslog 没启动:
sudo systemctl enable --now rsyslog
ps aux | grep rsyslog
如果没有进程:
sudo systemctl restart rsyslog
journalctl -u rsyslog -n 50
常见错误:
/var/log 权限错误现在很多程序只写 journal,不写 /var/log/syslog:
journalctl -xe
如果你发现:
journalctl 有日志/var/log/syslog 没有那是正常的(默认行为)
想让 rsyslog 也能收到:
sudo apt install rsyslog
并确保:
/etc/rsyslog.conf
中有:
module(load="imjournal")
/var/log 磁盘或权限问题(非常常见)df -h /var
如果 100%:
sudo journalctl --vacuum-size=100M
df -i /var
ls -ld /var/log
ls -l /var/log/syslog
正常应为:
drwxr-xr-x root syslog
-rw-r----- syslog adm
修复:
sudo chown syslog:adm /var/log/syslog
sudo chmod 640 /var/log/syslog
检查:
grep -R "syslog" /etc/rsyslog.d/
确认有类似:
*.*;auth,authpriv.none -/var/log/syslog
如果被注释掉,就不会写。
如果是 systemd 服务:
StandardOutput=journal
StandardError=journal
那就不会进 syslog。
少见但存在:
sudo aa-status
systemctl status rsyslog
df -h /var
ls -l /var/log/syslog
journalctl -u rsyslog
如果你愿意,可以告诉我:
/var/log/syslog 是否存在我可以直接帮你定位到具体原因。