如何将 .jar 应用程序作为服务运行(系统启动时启动)

如何将 .jar 应用程序作为服务运行(系统启动时启动)

好的,我会快速完成。我正在开发一个客户端-服务器应用程序,使用 Ubuntu 17.04 服务器作为服务器。该服务器中有一个包含所有服务器端代码的 jar。

代码只是绑定一些套接字并不断监听客户端请求并为每个请求创建线程。

问题是,我无法让 .jar 在系统启动时启动。我通过检查开放端口来检查这个问题,结果发现我编码的所有端口在启动时都没有监听。

我尝试过以下方法

启动应用程序 - 不起作用

Systemd - .sh 脚本在我正常运行时运行良好,.jar 运行并且端口打开,但启动时什么都没发生。使用sudo service bla bla bla start也可以完美运行应用程序。它只是在启动时不起作用

指定的目标是graphical.target并且单位在之后启动mysql.service

使用 init.d - 杰克糟糕的事情发生了

我不知道该怎么办。请帮忙,谢谢。

答案1

i) 创建名为 mystartup.sh 的 bash 脚本,以运行 /etc/init.d/ 目录中的 .jar 文件(以 root 身份登录)

# vi /etc/init.d/mystartup.sh

ii)向此脚本逐一添加命令:

#!/bin/bash

echo “Setting up customized environment…”
fortune

iii)设置脚本的可执行权限:

# chmod +x /etc/init.d/mystartup.sh

iv)确保每次 Debian Linux 系统启动/出现时都执行此脚本:

# update-rc.d mystartup.sh defaults 100

要阅读更多内容,请关注关联

答案2

该软件包提供了一种简单的方法upstart,安装后只需将以下脚本保存在etc/init/onshutdown.conf

# /etc/init/onshutdown.conf
start on starting rc RUNLEVEL=2
# execute single command
exec /bin/sh /path/to/mystartup.sh
# alternatively without an extra script
script
  java -jar /path/to/jarfile.jar
  # your commands here
end script

替换2为您喜欢的运行级别(例如[2345])。有关更多信息,请upstart参阅人5初始化新贵食谱

相关内容