使用systemd
,我如何配置服务不是在启动时启动,即使它在我最近关闭时正在运行?我知道我可以禁用一项服务,但如果我开始该服务,然后重新启动,它将继续运行。我要这个:
- 立即启动服务。
- 重启。
- 服务是不是活动/运行。
我在网上搜索了答案,但我发现人们询问和回答有关启动/停止以及启用/禁用服务的噪音太多。据我所知,我想我想在启动时明确禁用该服务。我是 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 start
foo
你甚至可能想使用一些sqlite数据库或JSON文件而不/var/tmp/dont_start_foo_service
是以某种方式存储您的文件不要开始旗帜。