在 Linux 上后台运行 Jar

在 Linux 上后台运行 Jar

我有一个永远运行的 jar(带有套接字监听线程的无限循环),需要它始终在后台运行。例如:“java -jar test.jar”我该怎么做?提前致谢!

答案1

有几种方法:

  1. 附加&在后面。但是,使用这种方法,如果您关闭启动该程序的终端,该程序仍然会被终止。

  2. 启动一个screen会话,并在其中启动程序;您可以分离screen会话并关闭终端。稍后,您可以再次连接到会话,并发现自己回到控制台,就像您一直在那里一样。但是,您需要在运行程序之前启动一个屏幕会话,如果您忘记了这样做,您将无能为力。

  3. 从 shell 中使用disown作业控制。这将从 tty 中分离任务,并且当 tty 关闭时,您的程序不会终止。但是,我认为没有任何方法可以重新附加被放弃的作业。

答案2

我一直使用的命令行提示符可以在长时间运行后持续到注销,它是“nohup”,因此在你的情况下是

nohup java -jar test.jar &

& 很重要,这样您就可以运行另一个 shell。我相信这不会持续到重启。

答案3

如果“始终”是指它在机器启动时启动,则需要将其作为启动时脚本的一部分启动。最简单的方法是添加

java -jar test.jar >/dev/null 2>&1 &

/etc/rc.local(或者/dev/null用您最喜欢的日志文件替换)。

更好的方法是制作一个init.d在适当的运行级别启动的脚本(例如,您可能不希望它在运行级别 0、1 或 6 上启动)。这样,如果它死机了,您还可以让它自动重新启动,并且有一个更好的界面来暂时停止它。

小例子http://www.howtoforge.com/forums/archive/index.php/t-3628.html

详细解释http://developer.novell.com/wiki/index.php/Writing_Init_Scripts

答案4

你可以在 Linux 的命令行末尾添加“&”符号来在后台运行任何任务,例如

java -jar test.jar &

相关内容