如何使用 systemd 启动 jar 文件

如何使用 systemd 启动 jar 文件

我想使用 在系统启动时启动 Java 应用程序systemd。我尝试通过添加上述脚本来实现。但服务没有启动。

我的启动服务

[Unit]
Description=Startup

[Service]
ExecStart=/usr/local/sbin/my-startup.sh

[Install]
WantedBy=multi-user.target

我的启动文件

cd /var/www/test.com
nohup java -jar *.jar>test.out 2>test.err &

但是服务器启动时应用程序没有启动。

● my-startup.service - Startup
   Loaded: loaded (/etc/systemd/system/my-startup.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Wed 2018-12-12 16:22:52 +0530; 27s ago
  Process: 650 ExecStart=/usr/local/sbin/my-startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 650 (code=exited, status=0/SUCCESS)

Dec 12 16:22:52 localhost.localdomain systemd[1]: Started Startup.
Dec 12 16:22:52 localhost.localdomain systemd[1]: Starting Startup...

答案1

使用 systemd 指令代替 shell 可实现更一致的环境。这包括不依赖 $PATH 或工作目录,而是提供已知的完整路径。

既不&需要进行作业控制,也不SIGHUP 需要管理。systemd 服务单元已在后台运行。

假设程序没有分叉,换句话说,java exec 继续运行,那就是Type=simple

[Unit]
Description=something

[Service]
ExecStart=/usr/bin/java -jar /var/www/test.com/something.jar
StandardOutput=file:/var/log/something.out.txt
StandardError=file:/var/log/something.err.txt
Type=simple
WorkingDirectory=/var/www/test.com

[Install]
WantedBy=multi-user.target

相关内容