4

topコマンドの出力を変数に保存する必要があり、これを行います。

myvar=`top -b -n1 | head -n 18`

問題は、戻り文字を無視しているように見えることです。そのため、コンテンツをエコーすると、次の$myvarように表示されます。

top - 15:15:38 up 745 days, 15:08, 5 users, load average: 0.22, 0.27, 0.32 Tasks: 133 total, 1 running, 132 sleeping, 0 stopped, 0 zombie Cpu(s): 6.4% us, 1.6%sy, 0.0% ni, 91.7% id, 0.3% wa, 0.0% hi, 0.0% si Mem: 2074716k total, 2038716k used, 36000k free, 84668k buffers Swap: 4192924k total, 107268k used, 4085656k etc...

すべての上位データを正しく保存するにはどうすればよいですか?

4

3 に答える 3

16

違いに注意してください。

#! /bin/bash

x=`top -b -n 1 | head -n 5`
echo $x
echo --------------------
echo "$x"

出力:

トップ - 14:33:09 アップ 7 日間、5:58、4 ユーザー、負荷平均: 0.00、0.00、0.09 タスク: 合計 253、2 実行中、251 スリープ、0 停止、0 ゾンビ Cpu(s): 1.6%us 、0.4%sy、70.3%ni、27.6%id、0.0%wa、0.0%hi、0.0%si、0.0%st Mem: 合計 3926784k、3644624k 使用、282160k 空き、232696k バッファ無料、1287352k キャッシュ
--------------------
トップ - 14:33:09 アップ 7 日間、5:58、4 ユーザー、負荷平均: 0.00、0.00、0.09
タスク: 合計 253、実行中 2、睡眠中 251、停止 0、ゾンビ 0
CPU: 1.6%us、0.4%sy、70.3%ni、27.6%id、0.0%wa、0.0%hi、0.0%si、0.0%st
メモリ: 合計 3926784k、使用済み 3644624k、空き 282160k、バッファ 232696k
スワップ: 合計 9936160k、使用済み 101156k、空き 9835004k、キャッシュ 1287352k

引用符がないと、変数の内容はシェルの引数処理で処理されます。

于 2010-01-26T20:33:35.857 に答える
1

上部の出力内の特定の情報を探している場合、すべてをキャプチャしてから必要なものを抽出するのではなく、保存する前に探しているものについて上部の出力をフィルタリングする傾向があります。

于 2010-01-26T20:31:02.107 に答える
-1

You could pipe it out through sed to catch and transform the line breaks, e.g.

top -n1 | sed 's/\(.*\)$/\1__CUSTOM_LINE_MARKER/g'

will output the CUSTOM_LINE_MARKER after every line. though Rob Wells answer above is probably a better approach.

于 2010-01-26T20:35:57.010 に答える