JAVA命令系列(一) : jps


1、功能

jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一個顯示當前用戶的所有java進程pid的命令 如下;

 2、位置 

jps 命令位於$JAVA_HOME/bin目錄下

 3、jps 用法

 

 沒有添加參數的時候,默認列出vm的標識符號即java的進程id和簡單的class或者jar 的名稱 如下圖所示

 -q 參數只顯示pid,不顯示class名稱,jar文件名,傳遞給main方法的參數

 -l 參數 輸出應用程序main class的完整package名或者 應用程序的jar文件完整路徑名

 -m 參數 顯示在啟動main方法的時候,傳遞給main方法的參數 String[] args,我這里傳遞的是helloword

 -v 參數 顯示啟動應用程序時通過-D參數設置的應用程序屬性值

 

 

 4、jps 失效問題排查

      在環境中有可能jps,jstatck等命令失效,查看不到進程pid或者jconsole,jvisualvm等工具打開查看不到進程pid,linux 的ps命令可以看到進程的pid

      因為啟動Java應用后,會在/tmp目錄生成了一個hsperfdata_$USER文件夾,該文件夾(/tmp/hsperfdata_$USER/pid)下面存儲的是各個java應用程序啟動的進程的pid,

      由於jps、jstack、jconsole、jvisualvm等命令和工具都是讀取這個目錄下面的文件,所以當該文件不存在或是無法讀取時就會出現無法查看該進程號

      原因:(1)默認情況下,/tmp目錄所有者和所屬組為root,權限為777,即所有人都有讀寫權限。出於系統安全等因素考慮,有些系統管理員會進行優化,使/tmp目錄不可寫,比如將權限改為750,或者干脆直接將其掛載為不可寫的分區等。

                 (2)除權限導致不可寫之外,該目錄所在分區已滿(使用率100%),同樣會造成該目錄不可寫,使用df -lh命令查看使用情況。

                 (3)啟動的時候添加 -XX:-UsePerfData 參數關閉了性能監控

 5、  java.io.tmpdir

       由於很多應用默認都要往該目錄下寫臨時文件,此時如果該目錄不可寫,應用運行就可能出現問題,比如Java應用。Java應用除了要往臨時目錄寫入一些臨時數據外,還包括性能監控數據,這就是所說的hsperfdata_$USER目錄,

前者可以使用系統變量java.io.tmpdir修改為其他目錄,例如-Djava.io.tmpdir=/opt/tmpdir,但是hsperfdata_$USER目前好像並沒有方法可以修改,只能在系統臨時目錄下生成

 需要注意的是,如果java.io.tmpdir指向的目錄不可寫,那么應用就可能起不來了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM