バッチモードで上部の画面幅を指定する


6

次の出力をログに記録しています:top -b -n1 -cそのため、毎分どのくらいのメモリとCPUを使用しているプロセスを追跡できます。topに完全なコマンドライン(-c)が表示されると、コマンドラインテキストは画面の端で切り捨てられます。これは、ターミナルで実行して表示するときに最適です。ただし、後で解析するためにSTDOUTをファイルに送信しており、完全なコマンド名をログに記録する必要があります。topに特定の画面幅を使用するように指示する方法はありますか?(私はそれが512で最大であることを知っています、それはうまくいくでしょう)

同様の目標を達成するためのより良い方法はありますか:実行中のプロセスとそれらが消費しているリソースの数に関する定期的な統計を取得しますか?

回答:


5

これはうまくいくようです:

COLUMNS=512 top -b -n1 -c

ただし、少なくとも出力が別のプログラムにパイプされる場合は、行を512列にスペースで埋めるように見えます。そのため、次のように出力をフィルタリングできます。

COLUMNS=512 top -b -n1 -c | sed 's/  *$//'

このアスタリスクの前には2つのスペース文字があります。


2

私は推測top本当にこの方法を使用することを意図していなかった、あなたが使用する必要がありますps代わりに。

$ ps axv
PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
   1 ?        Ss     0:07    314    31  3908    24  0.0 init [3]  
   2 ?        S      0:00      0     0     0     0  0.0 [kthreadd]
   3 ?        S      0:06      0     0     0     0  0.0 [ksoftirqd/0]
   4 ?        S      0:12      0     0     0     0  0.0 [migration/0]
   5 ?        S      0:10      0     0     0     0  0.0 [migration/1]
   6 ?        S      0:05      0     0     0     0  0.0 [ksoftirqd/1]
....

man 1 psオプションの長いリストを参照してください。


これは、将来に向かう賢明な方向かもしれません。ありがとう
ザックドワイエル

topの利点は、全体的なCPU負荷に関連する他のデータを表示することです。私はこれを使用して、Webサーバーで遅い要求が検出されたときにCPU時間を消費している他のものをログに記録しています。
マシューシンケル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.