Bashスクリプトでtopコマンドを実行したい
問題は通常、コンソールにtopコマンドを入力するときにCtrl+を押して終了することですC。
しかし、top
bashスクリプトでコマンドを実行するとどのように終了しますか?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}'