我有一个Java应用程序,我想创建一个系统服务以在启动时执行该jar。我知道如何为upstart和SysV进行操作,但是我在systemd上遇到了麻烦。
困难的部分是,我需要从jar所在的目录中执行jar,以便在jar旁边拾取application.properties
以及相对于jar位置的某些目录。
例如,采用以下结构:
+-var
+-myapp
+-app.jar
+-app.log
+-application.properties
+-certificate.jks
+-images
+-img1.jpg
我想要执行jar的方法是:
$ cd /var/myapp
$ java -jar app.jar
因此,当我执行jar时,我在myapp目录中,它登录到app.log
,然后拾取application.properties
并读取certificate.jks
。也可以找到目录images
。
我已经尝试将其作为systemd的单元文件]
[Unit] Description=App Description After=network.target [Service] Type=simple User=sebasira WorkingDirectory=/var/myapp ExecStart=/usr/bin/java -jar app.jar SuccessExitStatus=143 Restart=on-failure [Install] WantedBy=multi-user.target
它运行jar文件,但不是从
/var/myapp
内部运行>我该如何解决?
我有一个Java应用程序,我想创建一个系统服务以在启动时执行该jar。我知道如何为新贵和SysV做到这一点,但是我在systemd方面遇到了麻烦。困难的部分是我需要...
制作一个类似/ var / myapp的shell脚本:
#!/bin/sh
# runMyJar.sh
java -Djava.awt.headless=true -jar /var/myapp/app.jar