如何更改/分配java .jar的进程名称

ema*_*cer 7 java linux bash minecraft

我在Linux下运行Minecraft,它涉及运行可执行的.jar文件.这意味着它在ps下显示为"java",而不是"minecraft".我想为它指定进程名称"minecraft".

环顾四周,我发现以下提示通过bash分配进程名称:

如何更改Java应用程序进程的名称?

exec -a goodname java ...
Run Code Online (Sandbox Code Playgroud)

我经常跑:

java -cp ~/Games/Minecraft/Minecraft.jar net.minecraft.LauncherFrame
Run Code Online (Sandbox Code Playgroud)

所以尝试制作一个bash脚本:

#!/bin/bash
exec -a minecraft java -cp ~/Games/Minecraft/Minecraft.jar net.minecraft.LauncherFrame
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,它仍然在ps命令下显示为"java".

我究竟做错了什么?

Vic*_*ian 2

这个对我有用。我没有用java测试过,但我测试过sleep

victor@vz:~$ exec -a minecraft sleep 1m &
[1] 3858
victor@vz:~$ ps x | grep mine
 3858 pts/2    S      0:00 minecraft 1m
 3860 pts/2    S+     0:00 grep --color=auto mine
victor@vz:~$ 
Run Code Online (Sandbox Code Playgroud)

然而,据我从文档中可以看出,这似乎只是表面上的改变:

victor@vz:~$ help exec exec: exec [-cl] [-a name] [command [arguments ...]] [redirection ...] 用给定的命令替换 shell。

Execute COMMAND, replacing this shell with the specified program.
ARGUMENTS become the arguments to COMMAND.  If COMMAND is not specified,
any redirections take effect in the current shell.

Options:
  -a name pass NAME as the zeroth argument to COMMAND
Run Code Online (Sandbox Code Playgroud)

参考OP对此答案的评论:我刚刚也在使用java的远程计算机上测试了它:

victorz@exa:~$ javac test.java # spits out an Administrator.class file among others
victorz@exa:~$ exec -a minecraft java Administrator &
[1] 13142
victorz@exa:~$ ps x | grep mine
13142 pts/1    Sl     0:00 minecraft Administrator
13161 pts/1    S+     0:00 grep --color=auto mine
victorz@exa:~$ 
Run Code Online (Sandbox Code Playgroud)

也许您没有使用xswitch 来ps?除非我使用x开关,否则我不会得到匹配。