Bash:コマンドラインプログラムからデータを抽出する

Bash:コマンドラインプログラムからデータを抽出する

私はシステムの合計メモリを取得する方法を知っています。

$ free -lm
             total       used       free     shared    
Mem:          3008       2495        513         57

Nginxでワーカープロセスの基本メモリ消費(RSS)を取得する方法を知っています。

$ ps -C nginx -O rss
  PID   RSS S TTY          TIME COMMAND
 1564  1336 S ?        00:00:00 nginx: master process /usr/sbin/nginx
 1565  1756 S ?        00:00:00 nginx: worker process
 1566  1756 S ?        00:00:00 nginx: worker process
 1567  1756 S ?        00:00:00 nginx: worker process
 1568  1756 S ?        00:00:00 nginx: worker process

これで、交換に頼らずにシステムで使用できるワーカープロセスの数を確認するには、次の手順を実行します。

echo $((3008 * 1024))
3080192
$ echo $((3080192 / 1756))
1754

私のサーバーは、スワップを使用せずに1754個のnginxワーカースレッドを処理できます。ただし、上記のマルチステッププロセスをコマンドラインで実行できる単一の行に置き換えることができれば幸いです。

私の問題は、コマンドラインのfreeコマンドから「3008」を抽出する方法がわからないことです。この問題をどのように解決できますか?

ベストアンサー1

私の問題は、コマンドラインのfreeコマンドから「3008」を抽出する方法がわからないことです。

次の出力が与えられた場合:

free -lm
             total       used       free     shared    buffers     cached
Mem:          3757       1765       1991        138        122        766
Low:          3757       1765       1991
High:            0          0          0
-/+ buffers/cache:        876       2880
Swap:         7772          0       7772


この試み:

free -lm | grep '^Mem' | awk '{ print $2 }'
3757

totalこれにより、行の列が返されますMem:。私は3757

おすすめ記事