将Java控制台应用程序作为守护程序运行(后台)
我开发了一个Java控制台应用程序,在启动时打开一个控制台窗口并保持在前台,我想在后台启动该应用程序。
现在我通过此命令行启动应用程序:
java -jar myapp.jar
有没有办法实现这种行为? 它足以改变命令行参数,或者我需要对我的代码进行一些更改?
答案取决于操作系统。
*nix: & Windows: (opens a new console): start Windows: (doesn't open a new console): start /b
如果你在基于unix的任何东西中执行此操作,那么你可以追加到最终将生成一个新线程并保持它在后台运行。
java -jar myapp.jar &
如果你真的只想让它在后台运行, java -jar myapp.jar &
将完成这项工作。 这样,它会在shell关闭时死掉,但你可以继续使用你的shell。
如果你真的希望它作为守护进程运行, nohup java -jar myapp.jar &
将完成这项工作。 这样,当shell关闭时它将继续存在。
如果您希望这是可靠的,您可以准备一个init脚本或upstart作业定义 ,或者通过Vixie cron(8)
@reboot
说明符运行它以使其在启动时启动。
鉴于您使用的是Windows,您可能会考虑使用Java Service Wrapper 。 我过去曾在一个项目中使用它。