【问题标题】:How to get the complete result of command "top -c -b -n 1" through java, Runtime.getRuntime().exec(command)如何通过java获取命令“top -c -b -n 1”的完整结果,Runtime.getRuntime().exec(command)
【发布时间】:2015-12-01 04:33:54
【问题描述】:

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

【问题讨论】:

  • 您可能会发现从 /proc 读取此类数据会更容易
  • 这个问题与Java无关,是UNIX还是top问题。 -w 有帮助吗?

标签: java linux shell


【解决方案1】:

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 个字符后被切断,但希望这足以满足您的工作需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 2015-12-09
    • 2013-01-21
    相关资源
    最近更新 更多