如何在登录后启动特定的 systemctl 服务

如何在登录后启动特定的 systemctl 服务

在我的本地 ubuntu 服务器中,由于某些服务(例如 hciuart),启动需要时间。
我想在登录后启动这些服务,而不是在启动时启动。

如果我使用以下命令禁用这些服务

sudo systemctl disable hciuart

即使登录后该服务仍保持禁用状态,我需要明确启动它。

sudo systemctl start hciuart

但我想要的是,它应该自行启用,但在登录后或启动完成时,即它不应该延迟我的启动过程。

类似这样的服务位于我的启动关键链的路径上 在此处输入图片描述 就像上面的例子一样,我在启动时不需要 wpa_supplicant(在上图中我已经禁用了 hciuart,这就是它不可见的原因)

如何在登录后启动特定的 systemctl 服务?

答案1

如何在登录后启动特定的 systemctl 服务?

1 种可能的方法是使用 systemd用户会话。如果不存在,则创建服务目录:

mkdir -p $HOME/.local/share/systemd/user

使用新名称将 systemd 服务复制到此目录。我添加了 2,这将启用并列出它。

systemctl --user enable hciuart2.service 
systemctl --user 
  • root作为用户,您可能需要,因为您想使用带有此功能的设备,但您并不拥有该设备。

有一个更好的解决办法:

请注意,如果您不需要 BT,您可以保持hciuart禁用状态(并且blutoothhd)。

延迟的原因是,hciuart当无法申领时需要很长时间才能达到超时dev-serial1。而且它永远也不会达到。

所以 ...

  • Before=bluetooth.service在使用过程中移除hciuart
  • 改变Wants=dev-serial1想法Requires=dev-serial1 ,那就是您不需要 BT,您可以保持hciuart禁用状态。

... 它会立即启动。BT 服务大约需要一秒钟才能启动。

相关内容