在我的本地 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 服务大约需要一秒钟才能启动。