1
37
Apache Commons Daemon 将运行您的Java程序作为Linux守护进程或WINNT服务。 |
2
32
如果你不能依靠 Java Service Wrapper 引用 elsewhere (例如,如果您在没有软件包版本的Ubuntu上运行,那么您可能希望使用传统的方法:让您的程序在/var/run/$progname.pid中写入其pid,并在其周围编写一个标准的sysv in it脚本(例如ntpd的脚本,很简单)。最好让它也符合LSB。 本质上,启动函数测试程序是否已经运行(通过测试是否存在/var/run/$progname.pid,并且该文件的内容是正在运行的进程的pid),如果没有运行
停止函数检查/VAR/Run/$PrimNAM.PID,测试该文件是否是正在运行的进程的PID,验证它是Java VM(这样就不会杀死从Java Java守护进程的简单实例中重用PID)的进程,然后杀死该进程。 调用时,我的main()方法将首先在system.getproperty(“pid file”)中定义的文件中写入其pid。 一个主要障碍是:在Java中,没有简单和标准的方法来获得JVM运行的过程的PID。 我想到的是:
|
3
23
如果我想:
享受。
|
5
5
你可以试试 Java Service Wrapper ,社区版免费,满足您的需求。 |
6
4
那要视情况而定。如果这只是一次性的事情,我希望对其进行后台监控,然后回家,但通常我会等待结果,我可能会这样做:
在命令行。为了干净利落地杀死它,你有很多选择。您可能有一个sigkill侦听器,或者在端口上侦听并在建立连接时关闭,定期检查一个文件。不同的方法有不同的弱点。如果要在生产中使用,我会考虑更多,可能会在/etc/in it.d中添加一个脚本,使其不自动更新,并进行更复杂的关闭,如Tomcat所拥有的。 |
7
4
我在Ubuntu上的首选方法是使用libslack的“daemon”实用程序。这就是Jenkins在Ubuntu上使用的方法(这是我的想法所在),我在我的基于Jetty的服务器应用程序中使用了它,它工作得很好。 当您停止守护进程时,它将向JVM发出关闭信号。此时可以通过向runtime.addShuthDownbook()注册一个shutdown hook来执行关闭/清除代码。 |
8
2
This 问题是关于任意程序(不是Java特定)的后台化,所以一些答案可能适用于您的情况: |
9
2
daemontools:-在Unix上管理服务的更清洁的方法 https://cr.yp.to/daemontools.html
注: 用自己的JAR文件替换JAR。或任何Java类文件。
|
10
0
请看这里: http://jnicookbook.owsiak.org/recipe-no-022/ 对于基于JNI的示例代码。在这种情况下,您可以将在Java中执行的代码和主循环在C.中执行,但也可以将主、守护进程、服务循环放在Java中。 https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo029 和JNI玩得开心! |
11
0
这可能会起作用。 |
CalculusLover · 在本例中,fork()是如何工作的? 2 年前 |
jjmerelo · 使用Proc::Async从绑定管道读取 6 年前 |
jatinBatra · 编译后生成的二进制文件会发生什么情况[关闭] 6 年前 |
Jacobo · 从Java调用具有输入和输出重定向的C可执行文件 6 年前 |
Ran · 每当我尝试执行命令行提示符时,Unity就会阻塞 6 年前 |
Hatshepsut · 使用命令行参数使用region调用子流程 6 年前 |