
過去 24 時間にどのプロセスが高 CPU 使用率を引き起こしたかを確認するためのコマンドまたは方法はありますか。昨夜 11:30 pm (date:-30-nov-2022) に CPU 使用率が高いというアラートを受け取ったため、どのプロセスが高使用率を引き起こしたかを把握する必要があります。
答え1
サル
使用できますサルsysstat の一部として含まれています。インストールするには:
sudo apt-get install sysstat
次に、/etc/default/sysstat を編集し、「ENABLED」を true に設定して有効にします。
こうすることで、システムが監視され、10 分ごとにレポートが生成され、1 週間後にローテーションされます。この動作を変更するには、/etc/cron.d/sysstat の sysstat crontab を編集するか、/etc/sysstat/sysstat の sysstat 設定でローテーション設定を変更します。
次のコマンドを使用してリアルタイム レポートを生成できます。
sar -u 1 3
sysstat は、バックグラウンド CPU 使用率データを 1 分ごとに収集し、/var/log/sysstat/ に保存します。その後、スプレッドシート プログラムまたは sargraph などのカスタム ツールを使用して、このデータをインポートして分析できます。
上に
代替案としては、上にシステムレベルでの長期分析のために生のカウンタをファイルに保存することができ、プロセスレベルデフォルトでは、毎日のログファイルは 28 日間保存されます。システム アクティビティ レポートは、atopsar コマンドを使用してログファイルから生成できます。
atop は、次の Ubuntu リポジトリで入手できます。sudo apt install atop
答え2
トップコマンド
バッチモードのトップ
top -b -n 1
それからセドと一緒に釣り上げる
top -b -n 1 | sed -n 8,8p
答え3
ログファイルに直接アクセスする
ログファイル
grepで煮詰める
cat /var/log/syslog | grep Nov | grep 30 | grep 11: | grep pid=
答え4
プロセスコマンド
プロセスステータス (ps)
ps
ps -eo lstart、pid、時間、ユーザー、通信、pcpu |\ grep 2022 |\ grep Nov |\ grep pm |\ grep 11 |\ ソート -n -k 10 -r |\ ヘッド --行 1
説明
ps (プロセスステータス) -e (すべてのプロセス) -o (出力をフォーマットする) lstart (ロングスタート) pid (プロセス識別) 時間(時間) ユーザー(ユーザー) comm (コマンド) pcpu (CPU 使用率)
出力は別のプログラム grep にパイプされます。
grep 2022 | grep 11月 | grep pm |グレップ11
次に、番号とCPUの割合を含む列で並べ替えます
ソート -n -k 10 -r -n (数字) -k (列) -r (逆)
その後、最初のラインのみが通過できるようにヘッドにパイプで接続します
ヘッド --行 1