2016-04-01 7 views
0

yüzden benim sistem üzerindeki tüm JVMs için iplik dökümü alabilirsiniz böyle buHer çalışan jvm için bir jstack oluşturmanın basit bir yolu var mı?

jstack TÜM

falan gibi gitmek istiyorum.

Bu yapılabilir mi?

+0

Tahmin ediyorum ki (desteklenmeyen) ['jstack'] (https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstack.html) komutunu soruyorsunuzdur Oracle'ın Java geliştirici kitinin bazı sürümleriyle paketlenmiştir. Bu nedenle, Java ile ilgili olsa da, bu aslında * bir Java sorusu değildir *. [Bash] etiketini ekledim, ancak Windows'da bunu yapmakla ilgileniyorsanız, farklı bir kişi daha uygun olabilir. –

+0

Windows yardımına ihtiyacım yok, ancak bir başkasının –

cevap

2

jstack command reference bu üç çağırma formları sunmaktadır: Bunlardan

jstack [ options ] pid 

jstack [ options ] executable core 

jstack [ options ] [ [email protected] ] remote-hostname-or-IP 

, sadece ilk anda JVM'lerle alakalı jstack'un çalıştığı aynı sistemde çalışıyor. Bu nedenle, JVM süreçlerini kendi pids'leriyle tanımlamanız gerekir.

, Java listesi bir makinede çalışan işlem olsun jps (1) komutunu kullanmak için: pid argüman özetlerken, referans notları ise

. Eğer sizin için kullanılabilir jstack varsa

Muhtemelen, o zaman da jps var. Dokümanlar, yalnızca ilgili evrakların bir listesini almak için jps -q'u kullanabileceğinizi ve bu nedenle masaj yapmanız gerekmediğini öne sürmektedir. Eğer bash böyle bir şey yapabileceğini, göz önüne alındığında: Ben kendi üzerine raporlar bulmak için

for vmpid in $(jps -q); do 
    jstack $vmpid 
done 

Açıkça jps, Java uygulanmaktadır. Bu sizi rahatsız ediyorsa, o zaman yukarıdaki jps filtrelemek için tweaked olabilir.

1

Sen terminalde aşağıdaki çalıştırabilir:

ps -e | grep [j]ava | awk '{print $1}' | xargs -n 1 jstack 
+0

'jps'ye daha iyi bir seçenek olmasına yardımcı olabilir, çünkü yalnızca size bağlanabileceğiniz java süreçlerini verebilir. –

İlgili konular