在 Spring Boot 应用程序中,它会查找本地resources
文件夹来加载配置。因此,它的启动shell脚本需要在这个文件夹中运行:
x.jar
resources
|- application.yml
|- more.yml
startup.sh
我在写app.service
,我被困在这里:
[Unit]
Description=service for app
After=syslog.target network.target
[Service]
Type=forking
ExecStart=cd /data/flume; ./control.sh start
ExecReload=cd /data/flume; ./control.sh restart
ExecStop=cd /data/flume; ./control.sh stop
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
可执行路径不是绝对的,忽略: cd /data/flume; /bin/bash 启动.sh
是否有可能Chdir
在 systemd 中有一个?或者有没有一种体面的方法来实现这一目标?
选项是
[Service]
WorkingDirectory=
。但是无论如何,您都必须指定脚本的完整路径—— ExecStart 行不是 shell;它们有自己的规则,不同于 shell 命令。
(即使在实际的 shell 中,你也不需要在一个目录中运行脚本——你总是
./
可以用脚本的完整路径替换。)最后,最好直接启动服务,而不使用任何“control.sh”或“startup.sh”包装脚本。如果他们设置了环境变量,您也可以在 .service 中设置它们。