您可以做的事情很少。您的服务可能以 systemd 依赖项启动。很容易弄清楚。只需执行systemd show FIREWALLD.service 并查找WantedBy= 或RequiredBy=。如果没有人想要您的服务,那么它很可能通过 dbus 激活在 dbus 上启动。您可以运行 busctl 并查看您的服务是否为 dbus 可激活服务。
例如:
org.freedesktop.hostname1- - - (activatable) - -
如果您的服务是通过 dbus 激活启动的,AFAIK,没有简单的方法可以找出这一点 [1]。
您可以做的是,您可以使用systemctl mask 屏蔽 dbus 服务,然后等待来自尝试与您的 FIREWALD 对话的应用程序的错误消息。
[1] - 我需要这些信息并侵入了 dbus 代码。我有一个 1-2 年前工作的补丁。如果需要,请尝试将此补丁应用到 dbus 并重新运行您的系统。
commit e1c687c96c36b7bbf2db33e967741c22fe7007c9
Author: Umut Tezduyar Lindskog <umuttl@axis.com>
Date: Mon Sep 22 11:13:37 2014 +0200
log originator of activation requests
diff --git a/dbus/bus/activation.c b/dbus/bus/activation.c
index 149cca8..2a9c0bd 100644
--- a/dbus/bus/activation.c
+++ b/dbus/bus/activation.c
@@ -1788,6 +1788,28 @@ bus_activation_activate_service (BusActivation *activation,
if (connection)
dbus_connection_ref (connection);
+
+{
+DBusString loginfo_buf;
+unsigned long pid;
+// When connection is NULL, it is that we are trying to activate systemd
+// dbus[1106]: [system] Umut activation request by ':1.5' '/usr/bin/depd -n '
+// dbus[1106]: [system] Activating systemd to hand-off: service name='com.axis.Event.Switch' unit='dbus-com.axis.Event.Switch.service'
+if (connection != NULL && dbus_connection_get_unix_process_id (connection, &pid) && _dbus_string_init (&loginfo_buf))
+{
+ if (_dbus_command_for_pid (pid, &loginfo_buf, 50, NULL))
+ {
+ bus_context_log (activation->context,
+ DBUS_SYSTEM_LOG_INFO, "Umut activation request by '%s' '%s'",
+ bus_connection_get_name(connection), _dbus_string_get_const_data(&loginfo_buf));
+
+ _dbus_string_free (&loginfo_buf);
+ }
+
+}
+}
+
+