![我应该将 systemd [Install] 部分放入 .path 文件还是 .service 文件中?](https://linux22.com/image/179469/%E6%88%91%E5%BA%94%E8%AF%A5%E5%B0%86%20systemd%20%5BInstall%5D%20%E9%83%A8%E5%88%86%E6%94%BE%E5%85%A5%20.path%20%E6%96%87%E4%BB%B6%E8%BF%98%E6%98%AF%20.service%20%E6%96%87%E4%BB%B6%E4%B8%AD%EF%BC%9F.png)
配置 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
是正确的做法。