我应该将 systemd [Install] 部分放入 .path 文件还是 .service 文件中?

我应该将 systemd [Install] 部分放入 .path 文件还是 .service 文件中?

配置 systemd 以在提交新的源 .jar 文件时重新部署我的服务,我有一个与服务一起使用并使用PathChanged指令的路径文件。我在某处读到安装部分应该位于路径文件中,而不是服务文件中,但我注意到这使得“systemctl启用MYAPP”变得不可能。服务器重新启动时,如果安装仅在 .path 文件中,我的应用程序能否正常启动?我还应该注意其他问题吗?

# myapp.path
[Unit]
Wants=myapp.service

[Path]
PathChanged=/srv/webapps/myapp/myapp.jar

[Install]
WantedBy=multi-user.target

答案1

[Install]部分放入myapp.path.然后systemctl enable myapp.path

为什么不应该进去myapp.service

如果您将该[Install]部分放入 中myapp.service,那么服务将在multi-user.target启动后立即启动。你可能不想要这个。您希望myapp.service仅在触发它时才启动myapp.path

为什么要进去呢myapp.path

myapp.path触发器myapp.service。因此,myapp.path如果你想让它做任何事情,就需要启动它。如果您希望它在系统启动时就开始监视该路径,那么添加安装部分就是解决方案。

为什么不起作用systemctl enable myapp

如果您未指定扩展名,.service则假定为。因此systemctl enable myapp与 相同systemctl enable myapp.service。由于[Install]中没有该节myapp.service,所以启用失败。 systemctl enable myapp.path是正确的做法。

相关内容