Ubuntu 中 syslog 启动失败 常见原因有多种,下面按最常见 → 较少见的顺序给你一个排查思路。你可以逐条对照,基本都能定位问题。
Ubuntu 不同版本默认不同:
| Ubuntu 版本 | 默认日志服务 |
|---|---|
| ≤ 14.04 | rsyslog |
| 16.04+ | rsyslog(仍常见) |
| 18.04+ | rsyslog / journald |
| 20.04+ | rsyslog(可选) |
| 22.04+ | rsyslog 或完全用 journald |
先确认:
systemctl status rsyslog
如果提示:
Unit rsyslog.service could not be found
说明 rsyslog 没装,不是启动失败,而是不存在。
sudo apt update
sudo apt install rsyslog
sudo systemctl enable rsyslog
sudo systemctl start rsyslog
rsyslog 默认监听 514 端口,如果被占用会启动失败。
查看:
sudo ss -lntp | grep 514
sudo ss -lnup | grep 514
解决方式:
sudo nano /etc/rsyslog.conf
注释掉:
# module(load="imudp")
# input(type="imudp" port="514")
然后:
sudo systemctl restart rsyslog
这是最常见“启动失败但不知道为什么”的原因
检查配置:
sudo rsyslogd -N1
✅ 正常输出类似:
rsyslogd: version ...
❌ 错误会直接提示哪一行有问题。
rsyslog 需要写:
/var/log/var/log/syslog/var/log/messages检查权限:
ls -ld /var/log
ls -l /var/log/syslog
修复:
sudo chown syslog:adm /var/log/syslog
sudo chmod 640 /var/log/syslog
sudo systemctl restart rsyslog
Ubuntu 使用 systemd-journald,如果 rsyslog 和 journald 冲突:
查看:
systemctl status systemd-journald
解决方式(推荐):
sudo nano /etc/rsyslog.conf
确保有:
module(load="imjournal")
或关闭 journald 转发:
sudo systemctl mask systemd-journald-dev-log.socket
df -h
如果 /var 或 / 100%:
清理日志:
sudo journalctl --vacuum-size=100M
sudo rm -f /var/log/*.gz
查看:
sudo dmesg | grep apparmor
临时测试:
sudo systemctl stop apparmor
sudo systemctl restart rsyslog
systemctl status rsyslog
journalctl -xe
sudo rsyslogd -N1
把 status / journalctl 输出贴出来,我可以精确告诉你哪一行出错。
你可以直接回复:
lsb_release -a)systemctl status rsyslog 输出我可以 逐行帮你分析 ✅