sar レポートを調べたところ、1 日前など、特定の時間に CPU とメモリ使用率が高かったことがわかりました。
CPUとメモリを大量に消費するプロセスを見つけることができますか?どのプロセスがメモリとCPUを消費しているのか、どうすればわかりますか?
答え1
いいえ。
いくつかの(洗練された)監視を設定しないと、プロセスが終了した後にどのプロセスがCPUを使用したかがわかりません。
テーブルのような「標準」はありません。
exec path;exec name;stime,etime,%sys,%io,%wait,%idle,...
実行中にプロセスをキャプチャする必要があります。
答え2
crontab -e
# min hr day month day_of_week
# every minute run :
1 * * * * /root/watch_processes.sh
手動で一度実行してください。mkdir /root/process_watch
簡単なスクリプトの作成/root/watch_processes.sh
#!/bin/bash
# %cpu pid command args
ps -eo "%C %P %U %c %a" > /root/process_watch/`date +%Y%m%d_%H%M`
上記のコマンドは日付のみをファイル名として1分ごとにテキストファイルを生成しますが、上記の例ではすべて指定されたフォルダの下に配置されます/mkdir/process_watch
。 それに応じて調整してください。
http://linuxcommand.org/lc3_man_pages/ps1.html
ps -eo
必要に応じて各プロセスの出力を調整します。を使用すると、%C %P %U %c %a
次の5つのデータ列が生成されます。
- CPU%
- プロセス番号
- ユーザー名
- コマンドの実行
- 実行するコマンドに指定されたパラメータ
各ファイルの最初の列には、0.0を含む複数のリストが表示されます。 0%CPUプロセスをフィルタリングするのに慣れているawk
か、上記の構文を追加できます。sed
言ったように、プロセスが発生したとおりにキャプチャする必要があります。プロセスが完了すると、pid#が%cpuを使用した時点の記録はありません。一つ作らなければならないプロセス観察これをやり直して犯人を見つけてください。
答え3
過去のCPU/メモリ/ディスク/ネットワークのステータスは、ヘルプで確認できますatop -r
。次に、tまたはを押してT前後に移動します。
答え4
これは、コマンドの出力をtop
ファイルに保存することによって実行できます。
スクリプト:
NOW=`date "%y%m%d_%H%M%S"` ## to print the time.
echo "$NOW"
top > <PATH_TO_FILE>
exit 0
完了したら、このスクリプトをcronに入れて特定の内部で実行できます。