gpt4 book ai didi

java - 如何让 'top' 命令在 Java 运行时运行以返回进程列表以及每个进程消耗的资源量?

转载 作者:行者123 更新时间:2023-12-01 11:47:30 25 4
gpt4 key购买 nike

这是一个新手问题,所以请原谅我,我是新手。在发帖之前,我检查了互联网上的所有 x 十亿页,但没有回答我的具体问题。好吧,不是真的,但是这已经是四个小时的办公 table 打卡时间了,所以我觉得现在是尊重 SE 用户群庞大且看似包罗万象的知识的好时机。所以,事不宜迟...这是我的问题。

如上所述,我正在使用 bash (OSX) 和 Java,并尝试让脚本通过进程构建器(和/或 Java 运行时)运行,其运行方式与在单独的外壳。

例如,如果我编写一个包含以下代码的 shell 脚本 (.sh):

“#!/bin/bash”
“顶部 >/Users/NN2/Desktop/test.txt”

文件运行良好,并创建了预期的输出。但是,如果我执行以下操作:

(仅在示例中排除 try/catch)
ProcessBuilder builder = new ProcessBuilder(new String[]{"/bin/sh","/Users/NN2/Desktop/configure.sh"});


Runtime.getRuntime().exec("/Users/NN2/Desktop/configure.sh");

要么没有任何反应,要么出现原始版本的截断版本,其中不包含#MREG信息。除了上面的两个例子之外,我还尝试了看似详尽的其他变体列表,但它总是相同的,要么被截断,要么什么都没有。此外,这个问题似乎只与“top”命令有关,因为我尝试过的大多数其他命令确实有效(例如:ls、ef aux 等)。

我读到其他人在 Java 中使用 top 命令时遇到了权限问题,但是,我在其他几个安装中使用了 chmod 命令,因此这可能也不是问题的原因。但是,如果是,那么肯定是由于不知道哪些文件需要 chmod'ed。

此外,如果除了我正在做的事情之外还有其他方法可以找到我需要的信息,请告诉我们。最后,我只是希望在做其他事情之前能够使用java来检查我的计算机上正在运行哪些进程,以及它们使用了多少内存(以告诉程序何时完成加载)。不同的文件大小在不同的持续时间内打开,因此 thread.sleep 命令是我不想使用的解决方法。

谢谢

最佳答案

我厌倦了......

ProcessBuilder pb = new ProcessBuilder("top", "-l", "1");
pb.redirectError();
try {
Process p = pb.start();
InputStream is = p.getInputStream();
int value = -1;
while ((value = is.read()) != -1) {
System.out.print(((char)value));
}
int exitCode = p.waitFor();
System.out.println("Top exited with " + exitCode);
} catch (IOException exp) {
exp.printStackTrace();
} catch (InterruptedException ex) {
Logger.getLogger(JavaApplication256.class.getName()).log(Level.SEVERE, null, ex);
}

它输出类似...

PID    COMMAND          %CPU TIME     #TH   #WQ #PORTS MEM    PURG   CMPRS  PGRP  PPID  STATE    BOOSTS      %CPU_ME %CPU_OTHRS UID FAULTS     COW        MSGSENT    MSGRECV    SYSBSD      SYSMACH   CSW         PAGEINS  IDLEW     POWER USER            #MREGS RPRVT VPRVT VSIZE KPRVT KSHRD
96500 USBAgent 0.0 00:00.02 2 1 34+ 380K+ 0B 720K+ 96500 1 sleeping *0[1+] 0.00000 0.00000 501 2044+ 135+ 151+ 55+ 786+ 310+ 287+ 0 9 0.0 ... N/A N/A N/A N/A N/A N/A
96499 smd 0.0 00:00.01 2 1 19+ 8192B+ 0B 808K+ 96499 1 sleeping *0[1+] 0.00000 0.00000 0 1066+ 110+ 73+ 30+ 430+ 158+ 146+ 0 3 0.0 ... N/A N/A N/A N/A N/A N/A
84070 DiskUnmountWatch 0.0 00:00.02 2 1 25+ 8192B+ 0B 852K+ 84070 1 sleeping 0[0] 0.00000 0.00000 501 1290+ 115+ 201+ 95+ 1840+ 313+ 367+ 0 5 0.0 ... N/A N/A N/A N/A N/A N/A
83951 ath 0.0 00:11.89 6 0 52+ 4104K+ 0B 24M+ 83850 83850 sleeping *0[14+] 0.00000 0.00000 501 14309+ 152+ 7429+ 3385+ 246813+ 40467+ 104382+ 47+ 821 0.0 ... N/A N/A N/A N/A N/A N/A
83930 com.apple.iTunes 0.0 00:26.91 2 1 45+ 9736K+ 0B 76M+ 83930 1 sleeping *0[6+] 0.00000 0.00000 501 101584+ 149+ 742302+ 278377+ 1094603+ 464425+ 387242+ 49+ 15 0.0 ... N/A N/A N/A N/A N/A N/A
83911 AppleMobileDevic 0.0 00:00.14 3 0 47+ 24K+ 0B 4500K+ 83850 83850 sleeping *0[10+] 0.00000 0.00000 501 3416+ 202+ 677+ 298+ 3344+ 1005+ 1292+ 71+ 21 0.0 ... N/A N/A N/A N/A N/A N/A
83907 com.apple.MediaL 0.0 02:04.68 2 0 85+ 60M+ 0B 75M+ 83907 1 sleeping *0[41+] 0.00000 0.00000 501 215329+ 1028+ 763618+ 373231+ 3447492+ 1274798+ 1276787+ 11429+ 128 0.0 ... N/A N/A N/A N/A N/A N/A
83866 ath 0.0 00:06.18 4 0 40+ 2120K+ 0B 13M+ 83850 83850 sleeping *0[10+] 0.00000 0.00000 501 8056+ 152+ 5462+ 2504+ 136223+ 31146+ 37582+ 3+ 604 0.0 ... N/A N/A N/A N/A N/A N/A
83854 com.apple.BKAgen 0.0 00:00.04 2 1 42+ 20K+ 0B 1464K+ 83854 1 sleeping *0[2+] 0.00000 0.00000 501 2775+ 171+ 218+ 93+ 878+ 469+ 459+ 37+ 9 0.0 ... N/A N/A N/A N/A N/A N/A
.
.
.
29 thermald 0.0 00:00.60 2 0 31+ 576K+ 0B 544K+ 29 1 sleeping *0[1+] 0.00000 0.00000 0 8021+ 139+ 12033+ 6007+ 28656+ 16489+ 12726+ 52+ 1009 0.0 ... N/A N/A N/A N/A N/A N/A
27 fseventsd 0.0 06:03.81 9 0 219+ 8384K+ 0B 4168K+ 27 1 sleeping *0[1+] 0.00000 0.00000 0 1324890+ 88+ 673284+ 16997+ 20680415+ 3283315+ 5048419+ 18+ 550698 0.0 ... N/A N/A N/A N/A N/A N/A
26 kextd 0.0 00:49.92 2 0 58+ 4628K+ 0B 13M+ 26 1 sleeping *0[1+] 0.00000 0.00000 0 106864+ 563+ 10668+ 6440+ 431944+ 36727+ 136669+ 2775+ 245 0.0 ... N/A N/A N/A N/A N/A N/A
25 com.bombich.ccch 0.0 00:00.87 2 0 66+ 1108K+ 0B 3068K+ 25 1 sleeping *0[1+] 0.00000 0.00000 0 10385+ 221+ 8129+ 5704+ 25753+ 27131+ 16864+ 243+ 282 0.0 ... N/A N/A N/A N/A N/A N/A
24 EyeConnect 0.0 01:55.37 12 0 61+ 6964K+ 0B 4556K+ 24 1 sleeping *0[1+] 0.00000 0.00000 0 12222+ 260+ 1747+ 1180+ 3097895+ 2482+ 1264730+ 892+ 466746 0.0 ... N/A N/A N/A N/A N/A N/A
22 UserEventAgent 0.0 03:08.20 4 1 1439+ 6220K+ 0B 2336K+ 22 1 sleeping *0[1+] 0.00000 0.00000 0 1136602+ 295+ 3259840+ 1922426+ 8525137+ 6153879+ 5940157+ 1529+ 141344 0.0 ... N/A N/A N/A N/A N/A N/A
21 syslogd 0.0 01:07.95 7 6 183+ 956K+ 0B 256K+ 21 1 stuck *0[116596+] 0.00000 0.00000 0 304083+ 72+ 1247136+ 424254+ 4546991+ 1774131+ 1223614+ 10+ 22760 0.0 ... N/A N/A N/A N/A N/A N/A
1 launchd 0.0 22:36.73 6 4 3547+ 9800K+ 0B 3524K+ 1 0 sleeping 0[0] 0.00000 0.00000 0 158340+ 6059+ 18904581+ 9244535+ 30306022+ 32624561+ 12693124+ 1172+ 42752 0.0 ... N/A N/A N/A N/A N/A N/A
0 kernel_task 0.0 20:23:16 100/4 0 2+ 686M+ 0B 0B 0 0 running 0[0] 0.00000 0.00000 0 25398+ 0 258323633+ 231211103+ 0 0 2322888249+ 0 708699634 0.0 ... N/A N/A N/A N/A N/A N/A
Top exited with 0

现在,显然,您需要解析各个行来获取有意义的信息,但您只需读取输出文件就可以了...

关于java - 如何让 'top' 命令在 Java 运行时运行以返回进程列表以及每个进程消耗的资源量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29044442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com