vmstat输出排版混乱有什么方法解决或变通?

sh/bash/dash/ksh/zsh等Shell脚本
回复
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

vmstat输出排版混乱有什么方法解决或变通?

#1

帖子 科学之子 » 2017-09-11 2:04

vmstat输出排版混乱有什么方法解决或变通?

代码: 全选

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 5  1 2045096 119240    492 138408 251396 259648 11580     0 3054 1498 55 45  0  0  0
 4  1 2033372 120028    260 137584 247584 247268 15020     0 2730 1432 54 46  0  0  0
 2  1 2033396 131664    884 128616 249540 254556 12860    12 2956 1055 54 46  0  0  0
 4  6 2033396 117300    264 120496 290920 268188 14904     0 3640 1132 52 47  0  0  0
 2  2 2033248 113448    744 128612 249620 255636 10432     0 2906 1005 59 41  0  0  0
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: vmstat输出排版混乱有什么方法解决或变通?

#2

帖子 vickycq » 2017-09-11 10:23

先用 -w 开关试试,不过你这个是 swap 用得特别猛,-w 开关好像只把内存的几列变宽了

或者用 -S M 把单位变成 M,这样数字能短一点

再不行还可以自己后期处理,比如用 awk printf 或其它脚本语言,或 column 一类工具

后期处理模板:

代码: 全选

from subprocess import Popen, PIPE, CalledProcessError

cmd = 'vmstat 1'

with Popen([cmd], shell=True, stdout=PIPE, bufsize=1, universal_newlines=True) as p:
	for each_line in p.stdout:
		'''
		在此処后期处理
		在此处后期处理
		在此处后期处理
		'''
		print(each_line, end='')

if p.returncode != 0:
	raise CalledProcessError(p.returncode, p.args)
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: vmstat输出排版混乱有什么方法解决或变通?

#3

帖子 科学之子 » 2017-09-11 17:02

vickycq 写了:先用 -w 开关试试,不过你这个是 swap 用得特别猛,-w 开关好像只把内存的几列变宽了

或者用 -S M 把单位变成 M,这样数字能短一点

再不行还可以自己后期处理,比如用 awk printf 或其它脚本语言,或 column 一类工具

后期处理模板:

代码: 全选

from subprocess import Popen, PIPE, CalledProcessError

cmd = 'vmstat 1'

with Popen([cmd], shell=True, stdout=PIPE, bufsize=1, universal_newlines=True) as p:
	for each_line in p.stdout:
		'''
		在此処后期处理
		在此处后期处理
		在此处后期处理
		'''
		print(each_line, end='')

if p.returncode != 0:
	raise CalledProcessError(p.returncode, p.args)
貌似您提供的"后期处理模板"用的是python3?
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: vmstat输出排版混乱有什么方法解决或变通?

#4

帖子 vickycq » 2017-09-11 21:38

科学之子 写了:是python3?
是的,忘了添加 #!/usr/bin/env python3
不过用 -S M 把单位变成 M 后应该基本不需要再折腾了吧
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: vmstat输出排版混乱有什么方法解决或变通?

#5

帖子 科学之子 » 2017-09-12 0:19

vickycq 写了:
科学之子 写了:是python3?
是的,忘了添加 #!/usr/bin/env python3
不过用 -S M 把单位变成 M 后应该基本不需要再折腾了吧

代码: 全选

-S, --unit character
              Switches outputs between 1000 (k), 1024 (K), 1000000 (m), or 1048576 (M) bytes.  Note this does not change the swap (si/so) or block (bi/bo) fields.
看您第二次提到时我试了一下,跟man说的不一样,-S选项对si和so字段有效.
用了-S M选项效果要好的多,但测试程序用猛了还是会乱,而且in和cs字段要是猛了-S选项也没用:

代码: 全选

$ vmstat -w -S M 1
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
 r  b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st
 1  0            0          593           18          382    1    1   189    35  419 1030  16   8  75   1   0
 0  0            0          591           18          383    0    0     8     0  490 1786  15   3  80   2   0
 0  0            0          590           18          384    0    0     4     0  462 1736  13   3  84   1   0
 0  0            0          589           18          384    0    0     8    76  494 1587  21   4  74   2   0
 0  0            0          588           18          385    0    0     4   400  394 1507  14   2  84   1   0
 0  0            0          589           18          384    0    0     4   396  525 1749  12   4  76   9   0
 1  0            0          591           18          383    0    0     4     0  547 2302  23   3  73   1   0
 0  0            0          584           19          387    0    0  1460     0  689 3152  15   5  68  13   0
 0  0            0          584           19          387    0    0     4     0  473 2125  12   3  84   1   0
 1  0            0          591           19          384    0    0     4    32  495 1771  16   3  78   2   0
 0  0            0          585           19          385    0    0     8     0  538 2396  19   3  77   1   0
 0  0            0          584           19          386    0    0     4    36  476 2101  14   2  83   1   0
 2  0            0          588           19          387    0    0     4    40  466 1829  14   3  80   3   0
 1  0            0          587           19          387    0    0     4     0  396 1510  13   3  83   2   0
 3  0            0          296           19          384    0    0     8    32  798 1608  77  13   6   3   0
 3  1           82           85           19          350    0   82   384   528 1006 1579  68  32   0   0   0
 3  1          284           87           14          292    0  202  4276     8 1453 2422  50  50   0   0   0
 3  1          429           85            0          143    0  145  2040     8 1325 1997  59  42   0   0   0
 3 10          976           92            0          115    4  881 37104    72 69491 3812  56  44   0   0   0
 2 14         1696          142            0          105    3  386 15612    48 26864 2626  38  53   0   9   0
 3 16         1908           85            0          112  261  212 10732    12 27613 1339  59  42   0   0   0
 2 15         1999           90            0           92  648  678 33328    20 61645 6153  50  50   0   0   0
 2 14         1991           86            0           92  490  487 23452    16 72566 7054  51  49   0   0   0
 4  8         1989           90            0           96  418  427 20428     4 7343 2858  54  46   0   0   0
 4  8         1987           90            0           94  363  345 17636     4 4895 2047  50  50   0   0   0
 3  4         1996          110            0           96  359  385 18248     0 4901 2054  49  50   0   0   0
 3  5         1985          112            0           97  315  320 16364    12 4322 2025  54  46   0   0   0
 3  4         1986          113            0           93  352  339 16400     0 4332 1660  58  42   0   0   0
 3  5         2016          133            0           98  224  267 10540     0 3271 1334  49  52   0   0   0
 4 18         1989           91            0           92  631  593 32048     4 8013 3888  54  46   0   0   0
 3 19         1992          111            0           91 1326 1347 78764     0 16435 6486  54  46   0   0   0
 3 17         1985          110            0           91 2218 2214 114768     0 29337 11739  54  46   0   0   0
 3 12         1985          109            0           93  514  515 25480     0 6097 2519  54  46   0   0   0
 3 16         1985           92            0           93  318  299 14800     4 3822 1452  53  47   0   0   0
 3 16         1986          109            0           95  345  369 14920     0 4140 1372  53  47   0   0   0
 3 16         1985           99            0           98  794  775 45184    16 9657 4210  52  48   0   0   0
 3 16         1985          101            0           95  938  959 60764     0 12081 4861  53  47   0   0   0
 3 14         1985          110            0          100  416  416 23700     0 4929 1994  55  45   0   0   0
 3  7         1989          119            0           94  331  334 14964     0 3884 1571  52  47   0   0   0
 3  6         1985          122            0           95  429  427 18528     0 5005 2010  56  44   0   0   0
 3  5         1986          111            0          100  248  248 10424     0 2847 1116  58  42   0   0   0
 4  8         1986          109            0          102  250  247  8232     0 2845 1100  52  49   0   0   0
 0 12         1013         1474            1          114  175  193  9900     0 2634 1283  38  58   0   4   0
 0  3         1008         1447            2          130   12    0  9636     0  707 1170   3   4   0  93   0
回复