vmware.service 在关闭期间挂起

vmware.service 在关闭期间挂起

在 Arch Linux 上,由于一些系统更新(不幸的是我不能说出哪些),vmware.service在关机/重新启动期间挂起。

我发现,如果我在该服务仍在运行systemctl stop vmware.service时(即从 Gnome 终端)手动停止该服务 ( ) gdm.service,该服务会快速停止,然后关闭的速度与预期一样快。我用 google 搜索了一下,发现 Fedora 21 上也存在类似的问题,一位用户最终切换到 lightdm 来解决这个问题。我不想切换到 lightdm 所以我想知道是否有任何方法可以告诉 systemdvmware.service在 stop 之前停止gdm.service。或者如果有人有解决方法......

答案1

当然,有办法。systemd支持在单元对之间指定所谓的“排序依赖关系”,systemd当这些单元恰好在单个事务中激活/停用时,这些单元遵循一定的相互排序。

系统单元(5):

之前=,之后=

以空格分隔的单位名称列表。配置单元之间的排序依赖性。如果单元 foo.service 包含设置 Before=bar.service 并且两个单元都正在启动,则 bar.service 的启动将延迟到 foo.service 启动为止。 <...>请注意,当两个具有顺序依赖性的单元被关闭时,将应用启动顺序的相反顺序。即,如果一个单元在另一个单元上配置了 After=,则如果两个单元都关闭,则前者会先于后者停止。 <...>

因此,您希望在停止vmware.service之前停用(停止) 。根据上述内容,可以通过向单元gdm.service添加排序依赖性来实现。After=gdm.servicevmware.service

为了避免将整个单元复制到/etc/systemd/system,您可能需要使用以下机制临时插入(参见“示例2”)。您需要创建一个/etc/systemd/system/vmware.service.d/<some name>.conf仅包含所需指令和节标题的文件:

[Unit]
After=gdm.service

完成此操作后,发出systemctl daemon-reload命令重新systemd读取单位。关闭时,新的依赖项列表应该生效。

相关内容