如何在不使用“systemctl禁用”的情况下禁用服务

如何在不使用“systemctl禁用”的情况下禁用服务

有一个服务我只想在另一个服务失败时才运行 ( [Unit] OnFailure=foo),但我不希望该服务 ( foo) 在启动时自动启动。一个选项是 running systemctl disable foo,但我正在寻找另一种方法。

背景:我正在创建操作系统映像,并且我不想在systemctl disable foo宣布我的映像最终之前启动计算机,运行该命令 ( ),然后将其关闭。

答案1

systemctl enable通过操作/etc/systemd/system/(对于系统守护进程)中的符号链接来工作。当您enable使用服务时,它会查看WantedBy该部分中的行,并在这些目录[Install]中添加符号链接。.wants

systemctl disable则相反。

您可以直接删除这些符号链接 - 手动执行此操作完全等同于使用systemctl disable.

答案2

默认情况下所有服务都是“禁用”的; “启用”是选择加入。

如果foo.service是您的自定义服务,那么除非被某些东西(如指令)明确拉入,否则它不会启动OnFailure=,并且您不应该“禁用”任何东西。

答案3

您可以使用systemctl start ServiceName.servicesystemctl stop Service.Name.service分别启动和停止服务。与systemctl enable ...和相比systemctl disable ...,启动和停止命令仅持续当前会话,因此当您重新启动计算机时,更改将不会被保存。

答案4

还有屏蔽和取消屏蔽的选项,但应该由具有更多经验和知识的人来解释,而不是我。

sudo systemctl 掩码服务到掩码
sudo systemctl 取消屏蔽取消屏蔽服务

我希望这是正确的。但为了完整起见,此类事情需要包含在这次对话中。

掩蔽使用转移,/dev/null这非常好。

如果我没记错的话,可以在同一个会话中停止、禁用和屏蔽服务。

相关内容