如何使 systemd 杀死或停止重生 rsyslog 守护进程

Posted

技术标签:

【中文标题】如何使 systemd 杀死或停止重生 rsyslog 守护进程【英文标题】:How to make systemd kill or stop respawning the rsyslog daemon 【发布时间】:2018-06-23 13:12:18 【问题描述】:

systemd 可以让 rsyslog 守护进程在死亡时保持活跃,这真是太棒了。

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

systemctl stop rsyslogd.service

但该命令不会停止 rsyslog 守护进程。通过 Unix 信号杀死它并不会阻止 systemd 重新生成 rsyslogd:

kill -KILL <rsyslogd-pid>

即使执行systemctl mask rsyslogd.service 也不会停止重生。

如何让 systemd 停止重生“rsyslog”守护进程,以便使用调试对其进行故障排除?

【问题讨论】:

【参考方案1】:

好吧,看完这个错误报告链接:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815862

这似乎违反直觉...但实际执行的步骤是您必须停止两个 systemd 单元,而不仅仅是 rsyslog.service

systemctl stop syslog.socket rsyslog.service

问题解决了。

【讨论】:

澄清一下,syslog.socket 不是服务,是套接字文件,基本上它允许 systemd 按需启动 rsyslog,只有在连接到来时。 是的,你是对的,通用术语是单位,但单位也可以更多:freedesktop.org/software/systemd/man/systemd.unit.html

以上是关于如何使 systemd 杀死或停止重生 rsyslog 守护进程的主要内容,如果未能解决你的问题,请参考以下文章

systemd为啥会kill进程

systemd `systemctl stop` 主动杀死子进程

如果网络连接断开,则重新启动 systemd 服务

AWS ecs - 如果其中一个容器退出或被杀死,所有容器都会被杀死(停止)

杀死或停止活动线程

如何杀死不会死的VMware虚拟机? [关闭]