web-dev-qa-db-ja.com

Linux:プロセスごとのモニター、10分ごと、履歴アクセス付き

私は本当に私の質問をするより良い方法を知りませんでした、それであなたは恐ろしい名前の質問を受け取ります。

私がやりたいことを説明します、多分それはあなたが私を助けるのを助けるでしょう。

Linuxマシンで、マシン上のすべてのプロセスを継続的に(10分ごとに)監視したいと思います。私が必要とする各プロセスからの情報は、名前、CPU使用率、割り当てられた(仮想)メモリ、および常駐(RAM)メモリです。

これらの定期的なレポートを見ると、次のようになります。

PROCESS    CPU    RAM    VIRTUAL
name1    %    MB    MB
name2    %    MB    MB
...etc..etc

これらのレポートは、日付/時刻のスコープ(範囲)を指定して後日アクセスできるように保存する必要があります。たとえば、12:00:001.12.12から12:00:002.12.12までのプロセスの履歴を確認したい場合は、次のことができます。これらの間の10分ごとのプロセスの履歴が表示されます。日付/時刻の境界。

戻り値の形式は重要ではありません。とにかくスクリプトによって処理され、必要なものに変更できます。

これまでにいくつか調べてきましたが、自分のニーズを明確に満たすものは見つかりませんでした。私が検索したものの中で: sarfree(1)top(1) ..そして他のいくつかのもの。

これは単純な問題であるはずです。htopを見るだけでこのすべての情報を確認できますが、必要なのは、各プロセスの目的のフィールドを10分ごとに収集するツールだけです。日付/時刻のスコープ(範囲)に基づいて、そのデータのスライスを抽出します。

注:私はLinuxの経験が限られているので、詳細な情報を提供してください。

注2:希望の出力は次のようになります(希望の範囲を受け取った後)

CPU USAGE BY PROCESS:
proc_nameA 1,2,2,2,2,2...... numbers represent % usage every 10 minutes...
proc_nameB 4,3,3,6,1,2......

他の情報と同じ考え。

5
Inbar Rose

atopを試してください。

これらのシステム情報はすべて、5分または10分ごとに(ディストリビューションが選択した内容に応じて)デーモンとしてログに記録され、バイナリファイルに格納されます。次に、

atop -r

今日の標準ログファイルの内容をインタラクティブに表示します。これはhtopのようなもので、追加のI/O情報が含まれているため、時間を遡ってその瞬間に何が起こったかを確認できます。押す t 前進し、 Shift+t 戻る。

特定の時間範囲を指定することもできます。マンページから:

With the flag -b (begin time) and/or -e (end time) followed by a time argument
of the form HH:MM, a certain time period within the raw file can be selected.

生ファイルに何を書き込むかについて、過度に構成可能ではありません。

開始するには、topのマンページももっと読むことをお勧めします。昨日のログファイルの内容を読み取ります。

これが私のマシン「zarafa」が今朝7:35:40と7:45:40の間にどのように機能していたかです:

atop screenshot

8
gertvdijk