systemd java 文件服务管理

systemd java file service managment

我有这个 java 文件,它必须使用以下命令执行,否则它默认为 ipv6 并且对我的用例有效无用

-jar Djava.net.preferIPv4Stack=true EdOwl-Springboot.jar

我尝试按照本指南进行操作:https://computingforgeeks.com/how-to-run-java-jar-application-with-systemd-on-linux/

但是使用这个显示:

root@edowl:~# systemctl status EdOwl-Springboot.service
● EdOwl-Springboot.service - EdowlSpringboot
     Loaded: loaded (/etc/systemd/system/EdOwl-Springboot.service; disabled; vendor preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Tue 2022-02-22 11:28:26 UTC; 10s ago
   Main PID: 186854 (code=exited, status=203/EXEC)
      Tasks: 0 (limit: 614)
     Memory: 0B
     CGroup: /system.slice/EdOwl-Springboot.service

Feb 22 11:28:36 edowl.online systemd[1]: EdOwl-Springboot.service: Scheduled restart job, restart counter is at 125919.
Feb 22 11:28:36 edowl.online systemd[1]: Stopped EdowlSpringboot.
Feb 22 11:28:36 edowl.online systemd[1]: Started EdowlSpringboot.
Feb 22 11:28:36 edowl.online systemd[186888]: EdOwl-Springboot.service: Failed to execute command: No such file or directory
Feb 22 11:28:36 edowl.online systemd[186888]: EdOwl-Springboot.service: Failed at step EXEC spawning /bin/java: No such file or directory
Feb 22 11:28:36 edowl.online systemd[1]: EdOwl-Springboot.service: Main process exited, code=exited, status=203/EXEC
Feb 22 11:28:36 edowl.online systemd[1]: EdOwl-Springboot.service: Failed with result 'exit-code'.

服务文件如下:

[Unit]
Description=EdowlSpringboot

[Service]
WorkingDirectory=/home
ExecStart=/bin/java -Xms128m -Xmx256m -jar Djava.net.preferIPv4Stack=true EdOwl-Springboot.jar
Type=simple
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

文件位于 /home 目录

我确定是 exec start 行搞砸了,是否有必要说明:/bin/java -Xms128m -Xmx256m还是我搞砸了其他东西?

欢迎提出建议干杯

JVM 参数 java.net.preferIPv4Stack 应该以 -D 为前缀,而不是 D

此外,正如其他人在评论中指出的那样,请检查您的 java 路径,它可能是 /usr/bin/java

因此,将命令更改为 /usr/bin/java -Xms128m -Xmx256m -jar -Djava.net.preferIPv4Stack=true EdOwl-Springboot.jar