将Java控制台应用程序作为守护程序运行(后台)

时间:2011-06-24 19:53:36

标签: java jvm jvm-arguments

我开发了一个Java控制台应用程序,在启动时打开控制台窗口并保持在前台,我想在后台启动该应用程序。

现在我通过此命令行启动应用程序:

java -jar myapp.jar

有没有办法实现这种行为? 这足以改变命令行参数,或者我需要对代码进行一些更改?

4 个答案:

答案 0 :(得分:13)

答案取决于操作系统。

*nix: <your command> &
Windows: (opens a new console): start <your command>
Windows: (doesn't open a new console): start /b <your command>

答案 1 :(得分:6)

如果您在基于unix的任何内容中执行此操作,则可以附加&amp;到最后会产生一个新线程并保持它在后台运行。

java -jar myapp.jar &

答案 2 :(得分:4)

如果您真的希望它在后台运行,java -jar myapp.jar &将完成这项工作。这样,当shell关闭时它仍然会死,但你可以继续使用你的shell。

如果您真的希望它作为守护程序运行,nohup java -jar myapp.jar &将完成这项工作。这样,当shell关闭时它将继续存在。

如果您希望这是可靠的,可以准备一个init脚本或upstart job definition,或者通过Vixie cron(8) @reboot说明符运行它以使其在启动时启动。

答案 3 :(得分:3)

鉴于您使用的是Windows,您可能会考虑使用Java Service Wrapper。我过去在项目中使用过它。