日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jps命令原理

發布時間:2025/3/12 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jps命令原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、說明

jps位于jdk的bin目錄下,其作用是顯示當前系統的java進程情況,及其id號。 jps相當于Solaris進程工具ps。不象”pgrep java”或”ps -ef grep java”,jps并不使用應用程序名來查找JVM實例。因此,它查找所有的Java應用程序,包括即使沒有使用java執行體的那種(例如,定制的啟動 器)。另外,jps僅查找當前用戶的Java進程,而不是當前系統中的所有進程。

二、命令位置

很多Java命令都在jdk的JAVA_HOME/bin/目錄下面,jps也不例外,他就在bin目錄下,所以,他是java自帶的一個命令。

三、功能

jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一個顯示當前所有java進程pid的命令,簡單實用,非常適合在linux/unix平臺上簡單察看當前java進程的一些簡單情況。

四、原理

jdk中的jps命令可以顯示當前運行的java進程以及相關參數,它的實現機制如下:
*java程序在啟動以后,會在java.io.tmpdir指定的目錄下,就是臨時文件夾里,生成一個類似于hsperfdata_User的文件夾,這個文件夾里(在Linux中為/tmp/hsperfdata_{userName}/),有幾個文件,名字就是java進程的pid,因此列出當前運行的java進程,只是把這個目錄里的文件名列一下而已。 至于系統的參數什么,就可以解析這幾個文件獲得。*
先看臨時目錄:

[root@hadoop002 hsperfdata_hadoop]# pwd /tmp/hsperfdata_hadoop [root@hadoop002 hsperfdata_hadoop]# ll total 160 -rw-------. 1 hadoop hadoop 32768 Jun 3 19:00 51863 -rw-------. 1 hadoop hadoop 32768 Jun 3 19:00 51945 -rw-------. 1 hadoop hadoop 32768 Jun 3 19:00 52035 -rw-------. 1 hadoop hadoop 32768 Jun 3 19:00 52294 -rw-------. 1 hadoop hadoop 32768 Jun 3 19:00 52413

在使用jps命令查看

[hadoop@hadoop002 hadoop-2.6.0-cdh5.7.0]$ jps 52035 SecondaryNameNode 53525 Jps 52294 ResourceManager 51863 NameNode 51945 DataNode 52413 NodeManager

對應的進程號都存在。

五、JPS失效處理

  • 現象: 用ps -ef|grep java能看到啟動的java進程,但是用jps查看卻不存在該進程的id。待會兒解釋過之后就能知道在該情況下,jconsole、jvisualvm可能無法監控該進程,其他java自帶工具也可能無法使用
  • 分析: jps、jconsole、jvisualvm等工具的數據來源就是這個文件(/tmp/hsperfdata_userName/pid)。所以當該文件不存在或是無法讀取時就會出現jps無法查看該進程號,jconsole無法監控等問題

原因:

  • 磁盤讀寫、目錄權限問題 若該用戶沒有權限寫/tmp目錄或是磁盤已滿,則無法創建/tmp/hsperfdata_userName/pid文件。或該文件已經生成,但用戶沒有讀權限
  • 臨時文件丟失,被刪除或是定期清理 對于linux機器,一般都會存在定時任務對臨時文件夾進行清理,導致/tmp目錄被清空。這也是我第一次碰到該現象的原因。常用的可能定時刪除臨時目錄的工具為crontab、redhat的tmpwatch、ubuntu的tmpreaper等等
    這個導致的現象可能會是這樣,用jconsole監控進程,發現在某一時段后進程仍然存在,但是卻沒有監控信息了。
  • java進程信息文件存儲地址被設置,不在/tmp目錄下 上面我們在介紹時說默認會在/tmp/hsperfdata_userName目錄保存進程信息,但由于以上1、2所述原因,可能導致該文件無法生成或是丟失,所以java啟動時提供了參數(-Djava.io.tmpdir),可以對這個文件的位置進行設置,而jps、jconsole都只會從/tmp目錄讀取,而無法從設置后的目錄讀物信息,這是我第二次碰到該現象的原因
  • 總結

    以上是生活随笔為你收集整理的jps命令原理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。