8

我在 Linux 下运行 Minecraft,这涉及运行一个可执行的 .jar 文件。这意味着它在 ps 下显示为“java”,而不是“minecraft”。我想为它分配进程名称“minecraft”。

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

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

exec -a goodname java ...

我通常运行:

java -cp ~/Games/Minecraft/Minecraft.jar net.minecraft.LauncherFrame

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

#!/bin/bash
exec -a minecraft java -cp ~/Games/Minecraft/Minecraft.jar net.minecraft.LauncherFrame

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

我究竟做错了什么?

4

1 回答 1

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:~$ 

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

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

参考 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:~$ 

也许你没有使用xswitch to ps?除非我使用x开关,否则我找不到匹配项。

于 2011-01-10T19:07:46.997 回答