top 繰り返しからテキストを抽出

top 繰り返しからテキストを抽出

Bashスクリプトでtopコマンドを実行したい

問題は通常、コンソールにtopコマンドを入力するときにCtrl+を押して終了することですC

しかし、topbashスクリプトでコマンドを実行するとどのように終了しますか?top

たとえば、bashの上部で利用可能なメモリを印刷する方法は?

次の操作を行いましたが、説明したようにコマンドは値を返しません。

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

コンソールでtopを実行するとき:

  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}'

関連情報