在后台运行Java程序

13

大家好,我想要运行一个像Tomcat服务器一样的Java应用程序作为后台进程。为此,我开发了一个应用程序,并将一个类作为主类并从一个脚本文件(startup.sh)中调用。在startup.sh文件中,我调用了一个类,即MainMethodClass。在主方法类中,我编写了我的业务逻辑。当我在Linux服务器上使用Putty运行此应用程序时,只要Putty窗口没有关闭,它就可以正常工作。但是当关闭Putty窗口后,它也会停止工作,但我需要即使在关闭窗口后也能运行此应用程序。我该如何实现这个?


可能是在后台使用nohup执行命令的重复问题。 - Synesso
4个回答

45

Nohup命令可以使你运行的进程与当前终端分离,即使你关闭终端,进程也会继续执行。可以像下面这样运行:

nohup java -jar my.jar &

默认情况下,它会将输出导入到nohup.out文件中,如果你不想要这个,你可以尝试:

nohup java -jar my.jar > /dev/null &

1
我想执行以下命令 "java -jar myApp.jar arg1 &",它会导致出现 "nohup: ignoring input and appending output to `nohup.out'"。为了使用输入参数运行该命令,我该怎么做? - Emad Aghaei

6
这个问题与Java无关,实际上与Linux的操作方式有关。您需要执行以下操作:
nohup <your_application_command> &

请注意开头的“nohup”和结尾处的“&”,它们都是重要的标记。

感谢大家的快速响应,现在使用“sh startup.sh &”命令可以正常工作了。我在调用类文件MainMethodClass后进行了更改,现在可以无中断地运行了。再次感谢大家。 - java tech

4
您应该可以做类似以下的事情:

您应该能够执行以下操作:

nohup java -jar MyApplication.jar &

1

在Linux机器上,您可以为您的jar文件(可执行的jar文件,例如spring boot)创建一个服务。

# Set the Application as Service
ln -s $APP_BASE/bin/$APP_NAME.jar /etc/init.d/$APP_NAME

echo "Starting the application as service"
service $APP_NAME start 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接