作者brianhsu (坟墓)
看板java
标题Re: [问题] process id in linux
时间Wed Nov 11 09:19:04 2015
※ 引述《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://webptt.com/cn.aspx?n=bbs/java/M.1447204748.A.FD5.html
1F:推 Jaymainal: 谢谢我也是2的方式我倒是不知道 | 就是outputStream 11/11 09:38
2F:→ Jaymainal: 只是觉得很奇怪 为啥不能一起打 因为单纯ps -ef 可以读 11/11 09:38
3F:推 bitlife: 楼上原原po可以试试 /proc 目录下,每个数字目录打开读取 11/11 15:41
4F:→ bitlife: exe 或 cmdline 档案 11/11 15:41
5F:→ bitlife: 简单讲就是自己利用/proc当ps,至於grep就是parse上述2档 11/11 15:42
6F:→ bitlife: 合於所需的就抓出来用 11/11 15:43
7F:推 Jaymainal: 谢谢楼上 我会玩玩看 11/13 09:43