Re: [問題] process id in linux

看板java作者 (墳墓)時間9年前 (2015/11/11 09:19), 編輯推噓3(304)
留言7則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《Jaymainal (發呆中)》之銘言: : 在linux 有 ps -ef | grep processName 可以查 到pid : 我的processName 是個外部程式 : 想請問這個指令有辦法用java實作而不使用其他library嗎 : 有找到一個方式 : http://superuser.com/questions/635258/ps-ef-grep-java-using-java-program : 但是要另外包 apache.commons.jar : 或者有其他可以取得其他外部process id 的方式嗎 : 謝謝 想到的幾個方法: 1. 和 dBus 或其他 daemon 一樣,你的 processName 自己把 PID 寫到 /var/run/processName.pid 裡去,然後 Java 程式直接 讀這個檔案。 2. 和你給的 Link 一樣,直接呼叫外部的 ps -ef 指令,但是 IOUtils.copy 那段自己做,那邊基本上就是不斷讀 ps -ef 的 InputStream 然後丟到 grep 的 OutputStream。也就是 | 符號在做的事。 3. 因為 ps -ef 的指令的輸出是有固定格式和欄位的,所以一 樣用 Runtime.exec 執行 ps -ef 後,讀他的 InputStream 出來,每次讀一行進來,再用 line.split("\\s+") 切,最 後你再依照相對的欄位過濾出哪一行是你的 processName 就可以找到 PID 了。 -- ~ 白馬帶著她一步步地回到中原。白馬已經老了,只能慢慢地走, 'v' Brian Hsu 但終是能回到中原的。江南有楊柳、桃花,有燕子、金魚…… // \\ ( 墳 墓 ) /( )\ 但這個美麗的姑娘就像古高昌國人那樣固執。 【白馬嘯西風】 ^`~'^ http://brianhsu.moe 『那都是很好很好的,可我偏不喜歡。』 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.39.89 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1447204748.A.FD5.html

11/11 09:38, , 1F
謝謝我也是2的方式我倒是不知道 | 就是outputStream
11/11 09:38, 1F

11/11 09:38, , 2F
只是覺得很奇怪 為啥不能一起打 因為單純ps -ef 可以讀
11/11 09:38, 2F

11/11 15:41, , 3F
樓上原原po可以試試 /proc 目錄下,每個數字目錄打開讀取
11/11 15:41, 3F

11/11 15:41, , 4F
exe 或 cmdline 檔案
11/11 15:41, 4F

11/11 15:42, , 5F
簡單講就是自己利用/proc當ps,至於grep就是parse上述2檔
11/11 15:42, 5F

11/11 15:43, , 6F
合於所需的就抓出來用
11/11 15:43, 6F

11/13 09:43, , 7F
謝謝樓上 我會玩玩看
11/13 09:43, 7F
文章代碼(AID): #1MGfUC_L (java)
討論串 (同標題文章)
文章代碼(AID): #1MGfUC_L (java)