为什么 Debian 中没有设备单元文件?

Law*_*ard 3 debian systemd systemd-unit

我一直在阅读 systemd 并对设备单元文件进行了一些探索。

根据手册页:

systemd将为所有标有“systemd”udev标签的内核设备动态创建设备单元(默认情况下所有块和网络设备,以及其他一些)。这可用于定义设备和其他单元之间的依赖关系。要标记udev设备udev,请在规则文件中使用“TAG+="systemd"” ,请参阅udev(7)有关详细信息。

我曾尝试查看 /lib/systemd/system,如 Debian Wiki 中所述:

Debian 提供的单元文件位于 /lib/systemd/system 目录中。

但这些都无处可寻。

然而

~$ sudo systemctl list-units --type=device
Run Code Online (Sandbox Code Playgroud)

是否显示设备单元(如磁盘、声卡、以太网控制器等...)

我想知道在 Debian 中哪里可以找到设备单元文件?或者如果这些不存在,那么为什么不存在,systemd 如何在 Debian 中处理这些单元?

任何澄清/评论/见解将不胜感激。

谢谢MK。拉哈尔

Too*_*Tea 5

答案就在你引用的第一句话中。“systemd 将动态创建设备单元”。它说的是“创建”,而不仅仅是“开始”。通过与 udev 守护进程的集成,一旦内核告诉 udev 一个新设备,一个 .device 单元将被即时合成。(同样,如果设备消失,.device 单元也将被销毁。)

动态创建的是单元本身(所以它只存在于 systemd 的内存中),而不是单元文件。因此,它与动态创建的 .scope 单元或瞬态 .service 单元的机制基本相同(与由基于 的生成器创建的 .mount 单元文件不同/etc/fstab)。

因此,磁盘上的任何地方都没有单元文件。你可以看到systemctl status some.device它没有引用任何单元文件,systemctl show some.device也没有列出任何FragmentPath.