从 top 的一次迭代中提取文本

从 top 的一次迭代中提取文本

我想从 bash 脚本执行 top 命令

问题是,通常当我在控制台上键入 top 命令时,我会按Ctrl+退出C

但是当我从 bash 脚本top运行命令时如何退出?top

例如如何在 bash 中从顶部打印可用内存?

我执行以下操作,但命令不返回值,正如我所解释的

 top | grep Mem: | awk '{print $6" "$7}'

当我从控制台运行顶部时:

  top

  top - 17:55:24 up 20 days,  8:05,  3 users,  load average: 0.08, 0.08, 0.04
  Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie
  Cpu(s):  1.0%us,  3.2%sy,  0.0%ni, 95.2%id,  0.5%wa,  0.0%hi,  0.0%si,  0.0%st
  Mem:   2075516k total,  1731156k used,   344360k free,   373308k buffers
  Swap:  4192924k total,       76k used,  4192848k free,  1130448k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+       COMMAND                                                               
   1 root      15   0  2072  656  568 S  0.0  0.0   0:01.36 init     
 .
 .
 .

答案1

从选项的角度来看,@jimmij 的答案很好top,尽管看起来输出的格式top不能以可移植的方式依赖。

您提到您没有该free实用程序,但这只是界面的包装/proc/meminfo,您几乎肯定有。为什么不直接从马口(内核)获取您需要的信息:

$ grep MemFree: /proc/meminfo
MemFree:           75916 kB
$ 

或者,如果您希望通过以下方式将其格式化为单个数字awk

$ awk '$1=="MemFree:" {print $2}' < /proc/meminfo
74320
$ 

答案2

尝试这个:

top -bn1 | awk '$1=="Mem:" {print $6" "$7}'

相关内容