首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个调用的systemd type=forking服务

具有多个调用的systemd type=forking服务
EN

Unix & Linux用户
提问于 2020-10-13 22:31:41
回答 1查看 1.4K关注 0票数 0

是否可以编写系统d服务,如:

代码语言:javascript
复制
[Service]
Type=forking
ExecStart=forksomething

并在第一次调用仍在运行时允许第二个systemctl --user start forksomething.service

我已经考虑过让它成为forksomething@.service,从"forksomething@$(date +'%s').service"开始,我只是希望得到一些不那么烦琐的东西。(编辑:实际上,这会更糟,因为它也必须创建符号链接和守护进程重新加载。)

EN

回答 1

Unix & Linux用户

发布于 2020-10-13 23:56:51

创建forksomething@.service并运行systemctl daemon-reload一次之后,systemd将准备好启动任意数量的forksomething@anything.service服务,而无需进一步重新加载守护进程。

实际上,您的forksomething@.service实际上是一个服务模板。可以将实例名称中的@之后的部分用作模板中的参数。例如,如果您像这样定义服务:

代码语言:javascript
复制
[Service]
Type=forking
ExecStart=/usr/local/bin/forksomething "%i"

然后跑:

代码语言:javascript
复制
systemctl daemon-reload
systemctl start forksomething@1.service
systemctl start forksomething@2.service
systemctl start forksomething@3.service

系统d将为您运行命令/usr/local/sbin/forksomething 1/usr/local/sbin/forksomething 2/usr/local/sbin/forksomething 3

如果您希望从现在开始在每次引导时持续启动前两个实例,那么只需要说systemctl enable forksomething@1.servicesystemctl enable forksomething@2.service。这些命令将自动创建指向适当/etc/systemd/system/<whatever>.target.wants/目录的适当符号链接。

仅通过尝试启动服务模板,就可以调用服务模板的实例;只有当您希望服务模板与某个目标单元持久关联时才需要符号链接(如果您希望在引导时启动某个对象,则通常是default.targetmulti-user.target,但如果您想要与其他目标关联的实例,则可以在服务模板中指定Before=some.target )。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/614400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档