2011-01-10 22 views
7

Linux altında Minecraft çalıştırarak çalıştırılabilir bir .jar dosyası çalıştırıyorum. Bu, "minecraft" yerine ps altında "java" olarak görünmesi anlamına gelir. İşlem adını "minecraft" olarak atamak isterim. Yani bir bash betiği yapmak çalıştıjava .jar dosyasının işlem adı nasıl değiştirilir/atandığını gösterir.

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

: Genellikle çalıştırmak

how to change the name of a Java application process?

exec -a goodname java ... 

: Etrafa

, ben bash üzerinden bir süreç adını atamak için aşağıdaki ipucu bulundu :

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

Ancak bunu çalıştırdığımda, ps komutunun altında "java" olarak görünmeye devam ediyor.

Neyi yanlış yapıyorum?

+0

'exec -a 'Ubuntu 8.04'te benim için çalışır, ancak hala tüm java argümanlarını (" -cp "vb.) Görüntüler ve killall işlemi yeni adıyla bulamaz, yalnızca" killall java " çalıştı. JAR dosyalarını doğrudan komut satırından çalıştırmak için binfmt'yi de kullanmak isteyebilirsiniz. –

+0

Binfmt, işlem adını değiştirmeye izin veriyor mu? Ve eğer öyleyse, bu durumda nasıl kullanırdım? – emacsomancer

+0

Oh, benim kötü, binfmt kullanarak hala java olarak gösterir. Dahası, "exec -a" bunun için de çalışmayı durdurur. Yani bu aslında bir çözüm değil, tam tersi. –

cevap

2

Benim için çalışıyor. Ben java ile test ama sleep ile test etmedim:

galip @ vz:

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

Ancak bu ben belgeler ile söyleyebilirim kadarıyla sadece kozmetik bir değişiklik gibi görünüyor : ~ $ exec exec exec: exec [-cl] [-a ad] [komut [argümanlar ...]] [yönlendirme ...] Kabuğunu verilen komutla değiştirin. Bu cevaba OP'ın yoruma istinaden

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 

: Belki

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

Eğer ps için x anahtarını kullanarak değildir: Sadece yanı java ile uzak makinede test? x anahtarını kullanmazsam eşleşme olmaz.

+0

Uyku ile denedim ve söylediğin gibi çalıştı. Ama bu minecraft/java ile çalışmak gibi görünmüyor ve neden emin değilim. [değiştir: Ben sadece kozmetik değişimini istiyorum, böylece ps ile "minecraft" olarak görünüyor.] – emacsomancer

+0

@Slade, Cevabınızı yorumunuza bir cevap olarak güncelledim. –

+0

@B. Slade, belki de "java", java binary'yi başlatan sarıcı bir kabuk betiğidir? Bu yüzden yeni bir işlem adı alır, ancak daha sonra java'yı başlatır ve bundan dolayı yeni bir ad alır ("java"). Bunun gibi binfmt ile olur. Java binary'yi doğrudan/whereever/your/jvm/is/bin/java gibi çalıştırmayı deneyin. –

İlgili konular