确保服务在启动时_不_启动,即使它在关闭时运行

确保服务在启动时_不_启动,即使它在关闭时运行

使用systemd,我如何配置服务不是在启动时启动,即使它在我最近关闭时正在运行?我知道我可以禁用一项服务,但如果我开始该服务,然后重新启动,它将继续运行。我要这个:

  1. 立即启动服务。
  2. 重启。
  3. 服务是不是活动/运行。

我在网上搜索了答案,但我发现人们询问和回答有关启动/停止以及启用/禁用服务的噪音太多。据我所知,我想我想在启动时明确禁用该服务。我是 Linux 的高级初学者。我应该将该指令放在哪里以确保它发生在启动顺序中的适当位置?

或者还有其他明智且可靠的方法来做到这一点?

更新:我最终决定,我根本不应该将其安装为服务。回想起来,这似乎是显而易见的。

答案1

服务foo启动程序(其中需要提升)可能是测试给定文件是否存在的东西,例如/var/tmp/dont_start_foo_service,如果该文件存在,则不要exit立即执行任何操作。

在您的 C 代码中,使用访问(2)测试文件是否存在。

在您的 shell 脚本中,使用测试(1)为此,例如[ -f /var/tmp/dont_start_foo_service ];

也可以看看上级(7)对于文件名约定,并/etc/nologin记录在没有登录(5)作为现有技术。

创建(在之前关闭或重新启动之前)/var/tmp/dont_start_foo_service您可以使用的触摸(1)(或者创造(2)在 C 代码中)。

您将强制且明确地删除(例如,使用房间(1)或者删除(3)...) 在真正开始/var/tmp/dont_start_foo_service 之前。systemctl startfoo

你甚至可能想使用一些sqlite数据库或JSON文件而不/var/tmp/dont_start_foo_service是以某种方式存储您的文件不要开始旗帜。

还请考虑定时任务(5)@reboot有时间规定的作业,或atbatch作业(参见)。

相关内容