需要用到随机读取RandomAccessFile 类,常规的File IO流读取不到数据
public static void getProcessStatus(String pid) {
try {
RandomAccessFile reader2 = new RandomAccessFile("/proc/"+ pid +"/status", "r");
String str;
while ((str = reader2.readLine()) != null){
Log.d("ddebug",str);
}
reader2.close();
} catch (IOException e) {
e.printStackTrace();
}
}
调用:
FileUtil.getProcessStatus(Process.myPid().toString())
结果如下:
2021-03-29 22:32:36.540 31572-31640/com.example.myprocstatus D/ddebug: Name: le.myprocstatus
2021-03-29 22:32:36.541 31572-31640/com.example.myprocstatus D/ddebug: Umask: 0077
2021-03-29 22:32:36.541 31572-31640/com.example.myprocstatus D/ddebug: State: S (sleeping)
2021-03-29 22:32:36.541 31572-31640/com.example.myprocstatus D/ddebug: Tgid: 31572
2021-03-29 22:32:36.541 31572-31640/com.example.myprocstatus D/ddebug: Ngid: 0
2021-03-29 22:32:36.541 31572-31640/com.example.myprocstatus D/ddebug: Pid: 31572
2021-03-29 22:32:36.541 31572-31640/com.example.myprocstatus D/ddebug: PPid: 672
2021-03-29 22:32:36.542 31572-31640/com.example.myprocstatus D/ddebug: TracerPid: 0
2021-03-29 22:32:36.542 31572-31640/com.example.myprocstatus D/ddebug: Uid: 10251 10251 10251 10251
2021-03-29 22:32:36.542 31572-31640/com.example.myprocstatus D/ddebug: Gid: 10251 10251 10251 10251
2021-03-29 22:32:36.542 31572-31640/com.example.myprocstatus D/ddebug: FDSize: 128
2021-03-29 22:32:36.543 31572-31640/com.example.myprocstatus D/ddebug: Groups: 3003 9997 20251 50251
2021-03-29 22:32:36.543 31572-31640/com.example.myprocstatus D/ddebug: VmPeak: 5893916 kB
2021-03-29 22:32:36.543 31572-31640/com.example.myprocstatus D/ddebug: VmSize: 5891928 kB
2021-03-29 22:32:36.543 31572-31640/com.example.myprocstatus D/ddebug: VmLck: 0 kB
2021-03-29 22:32:36.544 31572-31640/com.example.myprocstatus D/ddebug: VmPin: 0 kB
2021-03-29 22:32:36.544 31572-31640/com.example.myprocstatus D/ddebug: VmHWM: 125604 kB
2021-03-29 22:32:36.544 31572-31640/com.example.myprocstatus D/ddebug: VmRSS: 125564 kB
2021-03-29 22:32:36.544 31572-31640/com.example.myprocstatus D/ddebug: RssAnon: 42864 kB
2021-03-29 22:32:36.545 31572-31640/com.example.myprocstatus D/ddebug: RssFile: 82224 kB
2021-03-29 22:32:36.545 31572-31640/com.example.myprocstatus D/ddebug: RssShmem: 476 kB
2021-03-29 22:32:36.545 31572-31640/com.example.myprocstatus D/ddebug: VmData: 1724852 kB
2021-03-29 22:32:36.545 31572-31640/com.example.myprocstatus D/ddebug: VmStk: 8192 kB
2021-03-29 22:32:36.545 31572-31640/com.example.myprocstatus D/ddebug: VmExe: 28 kB
2021-03-29 22:32:36.546 31572-31640/com.example.myprocstatus D/ddebug: VmLib: 166308 kB
2021-03-29 22:32:36.546 31572-31640/com.example.myprocstatus D/ddebug: VmPTE: 1052 kB
2021-03-29 22:32:36.546 31572-31640/com.example.myprocstatus D/ddebug: VmPMD: 40 kB
2021-03-29 22:32:36.546 31572-31640/com.example.myprocstatus D/ddebug: VmSwap: 15388 kB
2021-03-29 22:32:36.547 31572-31640/com.example.myprocstatus D/ddebug: Threads: 22
2021-03-29 22:32:36.547 31572-31640/com.example.myprocstatus D/ddebug: SigQ: 0/29564
2021-03-29 22:32:36.547 31572-31640/com.example.myprocstatus D/ddebug: SigPnd: 0000000000000000
2021-03-29 22:32:36.547 31572-31640/com.example.myprocstatus D/ddebug: ShdPnd: 0000000000000000
2021-03-29 22:32:36.548 31572-31640/com.example.myprocstatus D/ddebug: SigBlk: 0000000080001204
2021-03-29 22:32:36.548 31572-31640/com.example.myprocstatus D/ddebug: SigIgn: 0000000000000001
2021-03-29 22:32:36.548 31572-31640/com.example.myprocstatus D/ddebug: SigCgt: 0000000e400084f8
2021-03-29 22:32:36.549 31572-31640/com.example.myprocstatus D/ddebug: CapInh: 0000000000000000
2021-03-29 22:32:36.549 31572-31640/com.example.myprocstatus D/ddebug: CapPrm: 0000000000000000
2021-03-29 22:32:36.550 31572-31640/com.example.myprocstatus D/ddebug: CapEff: 0000000000000000
2021-03-29 22:32:36.550 31572-31640/com.example.myprocstatus D/ddebug: CapBnd: 0000000000000000
2021-03-29 22:32:36.551 31572-31640/com.example.myprocstatus D/ddebug: CapAmb: 0000000000000000
2021-03-29 22:32:36.551 31572-31640/com.example.myprocstatus D/ddebug: Seccomp: 2
2021-03-29 22:32:36.552 31572-31640/com.example.myprocstatus D/ddebug: Speculation_Store_Bypass: unknown
2021-03-29 22:32:36.552 31572-31640/com.example.myprocstatus D/ddebug: Cpus_allowed: ff
2021-03-29 22:32:36.553 31572-31640/com.example.myprocstatus D/ddebug: Cpus_allowed_list: 0-7
2021-03-29 22:32:36.553 31572-31640/com.example.myprocstatus D/ddebug: Mems_allowed: 1
2021-03-29 22:32:36.553 31572-31640/com.example.myprocstatus D/ddebug: Mems_allowed_list: 0
2021-03-29 22:32:36.554 31572-31640/com.example.myprocstatus D/ddebug: voluntary_ctxt_switches: 219
2021-03-29 22:32:36.554 31572-31640/com.example.myprocstatus D/ddebug: nonvoluntary_ctxt_switches: 192
adb shell 获取数据如下:
E:\sdk\platform-tools>adb shell cat /proc/31572/status
Name: le.myprocstatus
Umask: 0077
State: S (sleeping)
Tgid: 31572
Ngid: 0
Pid: 31572
PPid: 672
TracerPid: 0
Uid: 10251 10251 10251 10251
Gid: 10251 10251 10251 10251
FDSize: 128
Groups: 3003 9997 20251 50251
VmPeak: 5893916 kB
VmSize: 5790916 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 126272 kB
VmRSS: 125456 kB
RssAnon: 42176 kB
RssFile: 82680 kB
RssShmem: 600 kB
VmData: 1722796 kB
VmStk: 8192 kB
VmExe: 28 kB
VmLib: 166308 kB
VmPTE: 1048 kB
VmPMD: 40 kB
VmSwap: 15384 kB
Threads: 16
SigQ: 0/29564
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000080001204
SigIgn: 0000000000000001
SigCgt: 0000000e400084f8
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000000000000000
CapAmb: 0000000000000000
Seccomp: 2
Speculation_Store_Bypass: unknown
Cpus_allowed: ff
Cpus_allowed_list: 0-7
Mems_allowed: 1
Mems_allowed_list: 0
voluntary_ctxt_switches: 288
nonvoluntary_ctxt_switches: 232