Java'nın şu anda hangi jar dosyaları çalıştığını (ve PID'lerini) nasıl öğrenebilirim?


12

Bir var .jararızalar tanınıyor dosyayı. Bir arıza meydana geldiğinde, yalnızca yeniden başlatma yardımcı olur. Bu arızaları (dedi günlük dosyasını okuma) tespit etmek için bir yol var .jarBu yüzden bir arıza meydana geldiğinde süreci öldüren bir komut dosyası yazmak istiyorum. Problem şu:

confus@confusion:~$ ps -A
...
4438 ?        00:00:00 java
4439 ?        00:00:00 java
4443 ?        00:00:00 java
...

Çalışan tüm işlemlerin adı .jardoğal olarak "java" dır. Bu "java" işlemlerinden hangisini öldürmek istediğimi, yani çalışanı nasıl öğrenebilirim foobar.jar?


Aynı kullanıcı olarak çalışırsanız, örneğin visualvm kullanarak ekleyebilir ve öldürmeden önce inceleyebilirsiniz.
Thorbjørn Ravn Andersen

Yanıtlar:


11

Kaçabilirsiniz lsofkomutu, bir argüman olarak verilen senin kavanoz dosyası ile, dosyaları açtı işler listeleri. Daha az dosya içeren bir dosya görüntüleme örneği:

egil@mutter:~$ lsof foo.c
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
less    18871 egil    4r   REG    8,2        0 53862540 foo.c
egil@mutter:~$

Bir komut dosyasında pid'i kolayca yeniden kullanmak için, kısa modda çalıştırabilirsiniz:

egil@mutter:~$ lsof -t foo.c
18871

Bu cevap daha da iyi. +1.
Octavian A. Damiean

7

Kullanmak ps axyardımcı olacaktır.

İşlem ağacını BSD tarzında gösterecek ve bu da daha fazla bilgi gösterecektir.

Belirli bir süreci bulmak için sadece JAR adını grep gerekir. ps ax | grep JARNAMEyapacağım.


1

Bunu yerel olarak veya / proc // fd üzerinden "lsof" kurulu değilse yapabilirsiniz. Örnek:

ps -ef|grep -w java
...
0c4       6917  6916  0 12:22 pts/7    00:00:00 java
...

ls -la /proc/6917/fd/
total 0
dr-x------ 2 0c4 svauser  0 Apr  2 12:23 .
dr-xr-xr-x 9 0c4 svauser  0 Apr  2 12:22 ..
lrwx------ 1 0c4 svauser 64 Apr  2 12:23 0 -> /dev/pts/7
lrwx------ 1 0c4 svauser 64 Apr  2 12:23 1 -> /dev/pts/7
lrwx------ 1 0c4 svauser 64 Apr  2 12:23 2 -> /dev/pts/7
lr-x------ 1 0c4 svauser 64 Apr  2 12:23 3 -> /opt/jdk1.8.0_191/jre/lib/rt.jar
lr-x------ 1 0c4 svauser 64 Apr  2 12:23 4 -> /media/veracrypt1/Downloads/rr/testone.jar
lr-x------ 1 0c4 svauser 64 Apr  2 12:23 5 -> /usr/share/java/gnu-getopt-1.0.14.jar

0

Tam yolla kullanılan .jar dosyasını döndürecek seçeneklerle jpsbirlikte kullanabilirsiniz -l.

-l Uygulamanın ana sınıfı için tam paket adını veya uygulamanın JAR dosyasının tam yol adını görüntüler.


Soru sorulduğunda Java çalışma zamanlarında jps yoktu. Bugün mevcut olanlarda mevcuttur.
Thorbjørn Ravn Andersen

Java SE 6 belgelerinde görebiliyorum: docs.oracle.com/javase/6/docs/technotes/tools/share/jps.html ve burada gördüğüm gibi Aralık 2006'dan beri: en.wikipedia.org/ wiki / Java_version_history # Java_SE_7
froblesmartin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.