如何让systemd停止重启rsyslog守护进程或者将其杀死

11

systemd 能够让 rsyslog 守护进程在死亡时继续保持运行,这非常棒。

但是我正在制作一个新的 rsyslog 配置文件,并且需要以调试模式启动这个 rsyslog 守护进程。在我开始调试 rsyslogd 之前,我需要停止生产环境中的 rsyslog 守护进程,所以我执行了:

systemctl stop rsyslogd.service

但是这个命令不能停止rsyslog守护进程。通过Unix信号杀死它也不能阻止systemd重新启动rsyslogd:

kill -KILL <rsyslogd-pid>

即使执行 systemctl mask rsyslogd.service 命令也无法停止respawning。

我该如何让systemd停止respawning 'rsyslog'守护进程,以便我可以使用debug进行故障排除?

1个回答

30

阅读了这个错误报告链接后: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815862

这看起来有些违反直觉...但实际需要执行的步骤是停止两个systemd单元,而不仅仅是rsyslog.service

systemctl stop syslog.socket rsyslog.service

问题已解决。


2
只是为了澄清,syslog.socket 不是一个服务,而是一个套接字文件。基本上它允许 systemd 在需要时启动 rsyslog,仅当有连接时才会启动。 - aleivag
1
是的,你说得对,通用术语是“unit”,但一个unit也可以是更多:https://www.freedesktop.org/software/systemd/man/systemd.unit.html - aleivag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接