3

メモリ領域を解放する非常に単純なシェル スクリプトを作成しようとしています。このために、私はコマンドを使用しています

$ ps xopmem o%c

実行中のプロセスのリストを、そのメモリ使用率とともに出力します。ここで、(最初のフィールドの) 値が 5.0 より大きい行のみを除外したいと考えています。どうやってやるの?私はSEDを使用することをお勧めします。

PS: インターネットでこのトピックをググってみましたが、何も見つかりませんでした。どんな助けでも大歓迎です。

4

3 に答える 3

10

sedは数値比較を行うことができません。ツールを 1 つ上に移動する必要があります。つまり、次のようになりますawk

ps xopmem o%c | awk '$1 > 5.0'

つまり、最初のフィールドが 5 より大きい場合、デフォルト ブロックを実行します{ print $0 }

于 2012-07-15T17:24:13.943 に答える
1

一方通行。-nswithは自動的に印刷されないようにし、正規表現は先頭のスペースと5.0より大きい任意の数値に一致します。このp命令は、前の正規表現に一致する行を出力します。

ps xopmem o%c | sed -ne '/^ *[5-9]\.[0-9]/ p'
于 2012-07-15T17:09:31.973 に答える
1
ps xopmem o%c | sort -nr | \
    while read line
    do v=$(echo $line | cut -d' ' -f1); 
      [[ $v < 5 ]] && break; 
      echo $line; 
    done
于 2012-07-15T17:31:05.060 に答える