2011-01-10 23 views
7

Estoy ejecutando Minecraft en Linux, lo que implica ejecutar un archivo .jar ejecutable. Esto significa que aparece como "java" bajo ps, en lugar de "minecraft". Me gustaría asignarle el nombre del proceso "minecraft".Cómo cambiar/asignar el nombre de proceso de java .jar

Mirando a su alrededor, me encontré con el siguiente consejo para la asignación de un nombre de proceso a través de bash:

how to change the name of a Java application process?

exec -a goodname java ... 

que generalmente se ejecuta con:

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

Así intentado hacer una escritura del golpe :

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

Pero cuando ejecuto esto, todavía aparece como "java" bajo el comando ps.

¿Qué estoy haciendo mal?

+0

'exec -a' funciona para mí en Ubuntu 8.04, pero aún muestra todos los argumentos de Java (" -cp "y demás) y killall no encontraría el proceso por su nuevo nombre, solo' killall java' trabajó. También puede utilizar binfmt para ejecutar archivos JAR directamente desde la línea de comando. –

+0

¿Permite binfmt cambiar el nombre del proceso? Y, si es así, ¿cómo lo usaría en este caso? – emacsomancer

+0

Oh, mi mal, usando binfmt todavía se muestra como java. Además, "exec -a" también deja de funcionar. Entonces esto no es una solución, sino exactamente lo opuesto a uno. –

Respuesta

2

Funciona para mí. No he probado con Java, pero probado con sleep:

[email protected]:~$ exec -a minecraft sleep 1m & 
[1] 3858 
[email protected]:~$ ps x | grep mine 
3858 pts/2 S  0:00 minecraft 1m 
3860 pts/2 S+  0:00 grep --color=auto mine 
[email protected]:~$ 

Sin embargo, esto parece ser simplemente un cambio cosmético por lo que yo puedo decir por la documentación:

vencedor @ vz : ~ $ exec de la ayuda exec: exec [-cl] [-a nombre] [comando [argumentos ...]] [redireccionamiento ...] Reemplace el shell con el comando dado.

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 

En referencia al comentario de OP a esta respuesta: Yo sólo probado en una máquina remota con Java, así:

[email protected]:~$ javac test.java # spits out an Administrator.class file among others 
[email protected]:~$ exec -a minecraft java Administrator & 
[1] 13142 
[email protected]:~$ ps x | grep mine 
13142 pts/1 Sl  0:00 minecraft Administrator 
13161 pts/1 S+  0:00 grep --color=auto mine 
[email protected]:~$ 

Tal vez usted no está utilizando el interruptor x-ps? No obtengo ninguna coincidencia a menos que use el interruptor x.

+0

Lo probé con sueño, y funcionó tal como lo dijiste. Pero no parece funcionar con minecraft/java, y no estoy seguro de por qué. [edit: Solo quiero el cambio cosmético, para que se muestre como "minecraft" con ps.] – emacsomancer

+0

@Slade, actualicé mi respuesta como respuesta a su comentario. –

+0

@B. Slade, ¿tal vez tu "java" es una especie de script de envoltura que lanza el binario de Java? Entonces obtiene un nuevo nombre de proceso, pero luego lanza java y obtiene otro nombre nuevo ("java") debido a eso. Como sucede con binfmt. Intente ejecutar Java binary directamente, como/anywhere/your/jvm/is/bin/java. –

Cuestiones relacionadas