java - 如何通过java获取命令 "top -c -b -n 1"的完整结果,Runtime.getRuntime().exec(command)

标签 java linux shell

我想通过java获取命令“top -c -b -n 1”的结果,Runtime.getRuntime().exec(command), 但是进程列表的COMMAND列被压缩为“/usr/lib/x+”! 如何获得像在linux终端上直接执行命令一样的完整结果?

最佳答案

top man page提到了一个 -w COLS 选项来指定它尝试格式化输出的列数:

$ top -c -b -n 1 -w 1000 | head -n10
top - 05:01:40 up 19 days, 13:29,  1 user,  load average: 1.62, 1.49, 1.43
Tasks: 287 total,   2 running, 285 sleeping,   0 stopped,   0 zombie
%Cpu(s):  7.5 us,  3.1 sy,  0.0 ni, 89.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 32771952 total,   742552 free,  9000236 used, 23029164 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 23029384 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 4227 qemu      20   0 10.628g 5.797g   4688 S 112.5 18.5  34262:17 /usr/libexec/qemu-kvm -name test-vm -S -machine pc-i440fx-rhel7.0.0,accel=kvm,usb=off -cpu Nehalem -m 6144 -realtime mlock=off -smp 3,sockets=3,cores=1,threads=1 -uuid A5A5DC7B-3F35-40F9-B799-954D5411A219 -nographic -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/test-vm.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-p+
  84 root      25   5       0      0      0 R  68.8  0.0  13144:24 [ksmd]
2834 andrew    20   0  130180   1888   1284 R   6.2  0.0   0:00.02 top -c -b -n 1 -w 1000
...

现在它在大约 500 个字符后被切断,但希望这足以满足您正在做的事情。

关于java - 如何通过java获取命令 "top -c -b -n 1"的完整结果,Runtime.getRuntime().exec(command),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34012664/

相关文章:

java - JSoup 解析 HTML 问题

c++ - 使用 gprof 显示模板化方法调用图的参数格式?

c - unix中nice和setpriority的区别

linux - 在目录下列出所有内容,并提供详细信息(Linux Shell命令)

php - 在再次运行之前等待源 bash 脚本完成

java - 我可以使用 Java 8+ 比 Java 7 及更低版本中更少的代码行来关闭 InputStream、Reader、Writer...吗?

java - 如何将 ListView 点击上的数据动态传递到另一个 Activity

java - 游戏循环控制

linux - 在 x86 Linux 程序集中手动添加换行符到堆栈变量

shell - 如何使用 entr 在保存时编译和运行 Rust 文件?