我一直在阅读 systemd 并对设备单元文件进行一些探索。
根据手册页:
systemd
将为所有标有“systemd”标签的内核设备动态创建设备单元udev
(默认情况下所有块和网络设备以及其他一些设备)。这可用于定义设备和其他单元之间的依赖性。要标记udev
设备,请在规则文件中使用“TAG+="systemd"”udev
,请参阅udev(7)
参考资料。
我尝试查看/lib/systemd/system
,如 Debian Wiki 中所述:
Debian 提供的单元文件位于 /lib/systemd/system 目录中。
但这些都无处可寻。
然而
~$ sudo systemctl list-units --type=device
是否显示设备单元(例如磁盘、声卡、以太网控制器等...)
我想知道在 Debian 中哪里可以找到设备单元文件?或者如果这些不存在那么为什么不存在以及 systemd 如何在 Debian 中处理这些单元?
任何澄清/评论/见解将不胜感激。
答案1
答案就在你引用的第一句话中。 “systemd 将动态创建设备单元”。它说的是“创建”,而不仅仅是“开始”。通过与 udev 守护进程集成,一旦内核告诉 udev 有关新设备的信息,.device 单元将即时合成。 (类似地,如果设备消失,.device 单元也会被销毁。)
它是动态创建的单元本身(因此它仅存在于 systemd 内的内存中),而不是单元文件。因此,它与动态创建的 .scope 单元或瞬态 .service 单元的机制基本相同(与基于 的生成器创建的 .mount 单元文件不同/etc/fstab
)。
因此磁盘上的任何位置都没有单元文件。您可以看到它systemctl status some.device
没有引用任何单元文件,也systemctl show some.device
没有列出任何FragmentPath
.