如何在服务器上自主运行程序,如何在服务器上无限期地运行Java程序?

4

我有一个可执行的jar文件,想在Linux服务器上一直运行,直到停止。我尝试查看Java Service Wrapper API,但是很困难,而且我甚至不确定那是否是我想要的功能。有没有一种方法可以在服务器上运行程序,以便在退出登录后程序仍然继续运行?我使用ssh登录到服务器,并使用命令行运行jar文件。谢谢!


谢谢大家!难怪stackoverflow非常流行,你们太棒了!问题已得到解答 - user1747935
1
很高兴你得到了答案,但最好在SuperUser上提问。StackOverflow是用于“编程”问题的... - Stephen C
抱歉,谢谢你的提示。我的意思是,它涉及到编程...它涉及在Linux环境中运行Java Jar可执行文件,但我明白你的意思。StackOverflow很快就会在Google上出现,我有点想帮助其他有同样问题的人,但还是谢谢! - user1747935
4个回答

7

运行:

 nohup java -jar myjar.jar &

结尾处的&符号会在新的分离进程中运行它,这样即使你退出登录,它也会继续运行。nohup命令可以防止进程在拥有者退出登录时被挂起。

谢谢你的提示,我得回去检查一下我的程序,确保这种情况没有发生。 - user1747935

3

如果你有设置服务器为守护程序的能力,你可以这样做。如果没有,你可以尝试使用像screen这样的程序来创建一个虚拟终端。

sudo apt-get install screen
screen java -jar myJar.jar

如果你想重新连接终端:

screen -r

谢谢!哈哈,我已经知道答案了,但只是想帮助其他人避免像我一样经历可怕的恐惧来找出这个问题。感谢你的善良! - user1747935

2
如果您想将其作为服务运行,请查看daemontools。它可以在机器启动时启动您的程序,如果程序崩溃会自动重启,当机器关闭时停止运行。在Ubuntu上只需要执行apt-get命令即可安装。

1
是的,有这个功能!(请记住,它可能只适用于服务器而不是您的个人计算机)使用Linux的“screen”命令创建一个虚拟终端,即使在您注销后也可以继续运行。操作说明在这里
基本上,使用:
$ screen

启动一个新的虚拟终端窗口。启动您的代码,一旦它运行起来,请输入“control+a”,然后再输入“d”,从窗口中断开连接。一旦您分离,您可以注销并且您的程序仍将在服务器上运行。要返回它,请输入:

$ screen -r

然后你就可以回到你的程序了。非常简单!说明


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