如何阻止 systemd 自动重启 rsyslog 服务?

systemd 默认会在 rsyslog 崩溃后自动重启。通过 systemctl edit 创建覆盖配置,修改 Restart 策略即可控制。本文给出具体操作步骤。

最佳实践
如何阻止 systemd 自动重启 rsyslog 服务?封面

做法:用 sudo systemctl edit rsyslog 创建覆盖配置,修改 Restart= 策略(如改为 noon-failure),或者直接用 systemctl stop + systemctl disable 停止并禁用服务。

方法一:修改重启策略

sudo systemctl edit rsyslog

在打开的编辑器中添加:

[Service]
Restart=no

保存退出后重新加载并重启:

sudo systemctl daemon-reload
sudo systemctl restart rsyslog

各 Restart 策略说明

行为
no 永不自动重启
on-failure 仅异常退出时重启(推荐)
on-abnormal 信号终止/超时时重启
always 任何退出都重启

方法二:彻底停止并禁用

sudo systemctl stop rsyslog
sudo systemctl disable rsyslog

stop 停止当前进程,disable 阻止开机自启。但注意:如果其他服务(如 systemd-journald)依赖 syslog,可能会自动拉起。

方法三:屏蔽服务

sudo systemctl mask rsyslog

mask 会把服务链接到 /dev/null,彻底阻止任何方式启动(包括手动 start 和其他服务依赖拉起)。取消用 systemctl unmask rsyslog

常见问题(FAQ)

Q:为什么不直接改 /lib/systemd/system/rsyslog.service?
A:/lib/systemd/system/ 下的文件会在包升级时被覆盖。systemctl edit 创建的覆盖文件在 /etc/systemd/system/rsyslog.service.d/ 下,升级不受影响。

Q:停止 rsyslog 后日志还能记录吗?
A:rsyslog 负责处理 syslog 消息并写入 /var/log/ 下的文件。停止后,日志只存在 systemd-journald 的 journal 中(journalctl 查看),不会再写入 /var/log/syslog 等文件。

Q:临时调试 rsyslog 应该怎么做?
A:不需要停止服务。用 rsyslogd -N1 检查配置语法,systemctl restart rsyslog 重载配置即可。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台