Ubuntu 中 syslog 的启动顺序与关键要点
一、服务名称与默认实现
- 在现代 Ubuntu(16.04 及以后) 上,日志守护进程通常由 rsyslog 提供;也有使用 syslog-ng 的场景。两者都通过 systemd 管理,服务名分别为 rsyslog 与 syslog-ng。传统服务名 syslog 在部分系统上可能作为兼容单元存在,但在 Ubuntu 上实际提供日志功能的一般是 rsyslog 或 syslog-ng。
二、systemd 启动顺序与依赖
- 在现代 Ubuntu 的 systemd 启动流程中,syslog 服务通常在本地文件系统挂载完成后、网络就绪前后启动,具体顺序由单元文件中的 After= 与 Wants= 等依赖关系决定。典型情况下,syslog 会在多用户目标(multi-user.target)之前进入活动状态,以便其它服务启动过程中的日志能被及时记录。
- 查看依赖与顺序的常用命令:
- 查看服务是否启用与是否开机自启:sudo systemctl is-enabled rsyslog(或 syslog-ng)
- 查看服务详细状态与最近日志:sudo systemctl status rsyslog(或 syslog-ng)
- 查看单元依赖关系:systemctl list-dependencies rsyslog(或 syslog-ng)
- 查看启动耗时与是否失败:systemd-analyze plot > boot.svg(图形化查看启动序列)
- 查看服务在系统中的排序位置:systemd-analyze critical-chain rsyslog(或 syslog-ng)
- 如需调整顺序,可在 /etc/systemd/system/ 下创建自定义 drop-in 片段(例如 rsyslog.service.d/override.conf),通过添加或修改 After=、Before=、Wants=、Requires= 等指令来微调;修改后执行 sudo systemctl daemon-reload 并重启服务。
三、实际启动与验证步骤
- 确认正在使用的日志守护进程:
- 检查 rsyslog:sudo systemctl is-active rsyslog
- 检查 syslog-ng:sudo systemctl is-active syslog-ng
- 启动与自启(按需选择其一):
- rsyslog:sudo systemctl start rsyslog;sudo systemctl enable rsyslog
- syslog-ng:sudo systemctl start syslog-ng;sudo systemctl enable syslog-ng
- 验证日志是否生效:
- 查看服务日志:sudo journalctl -u rsyslog(或 -u syslog-ng)
- 查看系统日志文件:sudo tail -f /var/log/syslog(rsyslog 常用;syslog-ng 的日志路径依配置而定)
四、旧版 SysVinit 的差异
- 在 Ubuntu 14.04 等使用 SysVinit 的旧版本中,通常通过 service 命令管理:sudo service rsyslog start;设置开机自启可用 sysv-rc-conf 或 update-rc.d 等工具。启动顺序由运行级别与 S/K 链接决定,而非 systemd 的依赖图。