在Linux上在后台运行Jar


12

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

Answers:


8

几种方法:

  1. 附加&在后面。但是,使用此方法,如果您关闭了启动程序的终端,该程序仍将终止。

  2. 开始一个screen会话,并在其中启动程序;您可以分离screen会话并关闭终端。稍后,您可以再次连接到该会话,并发现自己回到控制台,就像您一直以来一样。但是,您将需要在运行程序之前启动屏幕会话,并且如果您忘记这样做,则将无法执行任何操作。

  3. disown从外壳程序使用作业控制。这将从tty分离任务,并且在tty关闭时不会终止您的程序。但是,我认为没有任何办法可以重新安排一份不干的工作。


13

我一直使用很长一段时间才能通过注销的命令行提示符是“ nohup”,因此在您的情况下是

nohup java -jar test.jar &

&很重要,因此您可以运行另一个shell。我相信这不会通过重新启动而持续。


7

如果“一直”表示它是在计算机启动时启动的,则需要将其作为启动时脚本的一部分来启动。这样做的肮脏方法是添加

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上的大解释


如果您希望仅使用用户权限运行它,另一种可能性是将其放入cron并使用“ @reboot”作为运行时间。有关详细信息,请参见“ man 5 crontab”。
pjz 2010年

3
java -jar test.jar &

&运算符将强制该进程在后台运行,您可以在之后运行“ top”命令以查看其是否正在运行。


1

您可以在Linux上在后台运行任何任务,方法是在命令行的末尾附加一个'&'符号。

java -jar test.jar &


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.