/ var / run目录创build即使服务被禁用

通常,存储pid或类似的目录是由服务的启动脚本创build的。 (看这个问题 )

不过,我刚刚注意到,这些目录仍然重新启动后,当我禁用服务重新创build。 这发生在我尝试的所有服务上。

root@sonorus:~# systemctl status openvpn ● openvpn.service - OpenVPN service Loaded: loaded (/lib/systemd/system/openvpn.service; disabled) Active: inactive (dead) root@sonorus:~# systemctl status ejabberd ● ejabberd.service - A distributed, fault-tolerant Jabber/XMPP server Loaded: loaded (/lib/systemd/system/ejabberd.service; disabled) Active: inactive (dead) Docs: https://www.process-one.net/en/ejabberd/docs/ 

哪个服务实际上是创build这些目录?

在systemd中,有一个叫tmpfiles.d(5)的新function,可以用来在.service文件之外创build启动文件或目录。 Openvpn和ejabberd都使用这个,所以这就是为什么/var/run中的目录仍然被创build,即使它们没有在启动时启动。

tmpfilesconfiguration文件存储在/usr/lib/tmpfiles.d/