Linux上监视Java应用程序的最佳方法

Linux上监视Java应用程序的最佳方法,java,linux,daemon,Java,Linux,Daemon,虽然我发现这个问题在SW上被回答了好几次,但我没有找到一个结论性的答案——什么是最好的方法 我不打算使用任何外部包装器,因为我发现他们启动java进程的级别比自己低,这可能会降低性能,所以似乎只剩下shell方法了 到目前为止,我发现了3种不同的shell方法: 启动停止守护进程 RedHat守护进程init.d函数 启动时不关机/启动后不关机 你们正在使用什么,可以推荐什么作为最可靠的方法 谢谢。您可以尝试使用屏幕(启动屏幕,然后启动java程序,然后关闭[不退出]屏幕)我不会完全排除外部

虽然我发现这个问题在SW上被回答了好几次,但我没有找到一个结论性的答案——什么是最好的方法

我不打算使用任何外部包装器,因为我发现他们启动java进程的级别比自己低,这可能会降低性能,所以似乎只剩下shell方法了

到目前为止,我发现了3种不同的shell方法:

  • 启动停止守护进程
  • RedHat守护进程init.d函数
  • 启动时不关机/启动后不关机
你们正在使用什么,可以推荐什么作为最可靠的方法


谢谢。

您可以尝试使用
屏幕(启动屏幕,然后启动java程序,然后关闭[不退出]屏幕)

我不会完全排除外部包装。
我注意到一些使用Tanuki包装器的受人尊敬的软件


这还有一个额外的优点,即程序也可以作为windows服务轻松运行,方法一致。

如果我想在后台作为守护进程运行应用程序,我会这样做:

nohupjava-jarmyjar&

它没有什么特别不可靠的地方-
nohup
在您断开连接时阻止它接收
SIGHUP
,并且
&
在后台运行进程


或者,您可以将输出重定向到非
nohup.out

的其他位置,而对此的标准答案似乎是,我一直在使用djb作为将任何内容制作成守护进程的好方法

我有java、python和一些shell脚本,它们都作为守护进程运行,有一个简单的启动/停止它们的方法和很好的日志记录


我曾经按照最初的设计在initctl上以root用户身份运行daemontools本身,但几个月后,我决定在普通用户下手动运行它,并使用它进行更好的日志记录。

我将使用RedHat daemon init.d函数。这允许您在服务器重新启动时重新启动应用程序。运行nohup不能处理服务器重启等问题。

我过去使用过,非常成功。事实上,它是一个Java库,使事情变得更容易,嵌入功能是微不足道的。

看一看。 它是免费的,并且在某种程度上兼容了TanukiSoftwareJava服务包装器的重新实现,具有免费的64位支持


还有一个和的对比表。

他将无法在Linux上作为Windows服务运行此服务。我确实没有密切关注mono的发展,但这不是重点。为什么不必要地将应用程序限制在Linux上运行。也许其他人会发现需要运行应用程序,并发现自己处于只能在windows上运行的位置。与其赶走潜在的用户,为什么不限制限制并鼓励重复使用呢?这不完全是一个糟糕的建议,我这样做是为了某些事情。但我认为这与作为守护进程运行某些东西的意图相去甚远。尽管如此,还是要感谢你的建议。“你们在用什么”民调问题是离题的,所以“你们在用什么”是主题,你们决定关闭东西是因为它们是“基于意见的”。讽刺不是吗?