如何在操作系统中为Java进程命名(非Java名称)

14
我正在玩弄一些微服务,并在我的笔记本电脑上运行它们,简单地为每个微服务分配一个新端口。问题是,如果我想重新启动其中一个微服务,我必须关闭它们所有,因为在操作系统中,这些进程都被称为java。虽然有时我可以猜测最后启动的具有最高的pid等,但这不是确切安全的做法...
那么,有没有办法在操作系统中启动一个Java应用程序并分配一个名称?也许像这样: java --Dos.name MyFirstService -jar MyJar.jar.

2
哪个操作系统? - Gowtham
@Gowtham 我更喜欢让Java处理它,而不是通过包装操作系统特定的命令来处理它。但现在我正在运行Windows,但如果我玩了一段时间后感到满意,它将在Linux上运行。 - Roland
1
你问题的另一个可能解决方案是使用能够显示完整命令行而非仅进程名称的工具。例如,在Windows上,Process Explorer可以做到这一点。 - Jiri Tousek
2个回答

9
在Windows下,除非安装某种posix子系统,否则无法实现此功能。
在Linux下,您可以使用带有“-a“newName””选项的exec命令来别名化您希望生成的进程。
例如:
exec -a "myJar" /path/to/java -jar /path/to/jar.jar

8
如果您需要区分不同的Java程序,可以使用jps命令,它会给您列出所有Java进程的列表,并使用该命令运行您的程序。
java -Dname=myFirstService -cp  myFirstService.jar some.client.main.MyFirstService

然后,如果您执行以下操作:
jps -v

您将会正确地看到您的流程。

如果您需要在操作系统级别更改流程名称,建议您使用 http://launch4j.sourceforge.net/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接