【Linux】CPU・メモリ使用率を日時付きでCSV出力する方法|負荷監視に便利なコマンドまとめ【コピペ解決】
Linuxでサーバの負荷状況(CPU・メモリ使用率)を記録したいときに便利なのが、CSV形式での出力です。
今回は「日時,CPU使用率(%),メモリ使用率(%)」といった形でCSVファイルに追記していき、コマンドを紹介します!
コマンド:CSVに追記する一発スクリプト
echo "$(date '+%Y-%m-%d %H:%M:%S'),$(top -b -n1 | grep '%Cpu(s)' | awk -F',' '{print $4}' | awk '{printf("%.1f", 100 - $1)}'),$(free -m | awk '/Mem:/ {printf("%.1f", $3/$2*100)}')" >> resource_log"$(date "+%Y-%m-%d")".csv
🔰 Linuxを試せる環境がない方へ
コマンドなどを実際に試してみたいけれど、Linux環境がない…
そんなときは、「さくらのVPS」を使えば簡単に自分専用のLinux環境が手に入ります!
- ✅ 月額524円(税込)〜手軽に始められる
- ✅ UbuntuやDebianなど、好みのOSが選べる
- ✅ SSH接続でターミナル操作もバッチリ
- ✅ 日本国内の大手サービスで安心・安定
\ あなただけのLinux環境を5分で構築! /
各コマンドの解説
✅ 初心者向けまとめ図(全体の流れ)
[現在の日時] + [CPU使用率] + [メモリ使用率]
│ │ │
└─── date └ top + awk └ free + awk
↓ ↓ ↓
"2025-08-04 17:20:33", "2.5", "54.7" → CSVに追記
🔹 date '+%Y-%m-%d %H:%M:%S’
📌 何をしているの?
→ 今の「日付と時刻」を、見やすい形(例:2025-08-04 17:20:33)で出しています。
📌 詳しく分解すると:
| 記号 | 意味 | 出力例 |
| %Y | 西暦(4桁) | 2025 |
| %m | 月(2桁) | 08 |
| %d | 日(2桁) | 04 |
| %H | 時間(24時間表記) | 17 |
| %M | 分 | 20 |
| %S | 秒 | 33 |
🟢 この部分だけを実行するには:
date '+%Y-%m-%d %H:%M:%S'
🔹 top -b -n1 | grep '%Cpu(s)’
📌 何をしているの?
→ top コマンドで「CPUの使用状況」の行だけを取り出しています。
-b:バッチモード(非対話)で出力-n1:1回だけ更新して終わるgrep '%Cpu(s)':「%Cpu(s)」という文字列を含む行だけを表示
🔍 topコマンド部分の実行例:
%Cpu(s): 2.5 us, 0.0 sy, 0.0 ni, 97.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
🔹 awk -F’,’ '{print $4}’
📌 何をしているの?
→ 上で取り出した行を「カンマ(,)」で区切って、4番目の項目("アイドル時間")を取り出しています。
🔍 例えばこの行:
%Cpu(s): 2.5 us, 0.0 sy, 0.0 ni, 97.5 id, ...
カンマで分けると:
| 番号 | 内容 |
| 1番目 | 2.5 us |
| 2番目 | 0.0 sy |
| 3番目 | 0.0 ni |
| 4番目 | 97.5 id ←★ これを取り出してる! |
🔹 awk '{printf(“%.1f", 100 – $1)}’
📌 何をしているの?
→ 97.5 id の中の数値(97.5)だけを取り出して、それを 100から引くことで「CPU使用率」を出しています。
100 - $1:アイドル時間から「使用されていた時間」を計算%.1f:小数点1桁で整えて出力
🟢 例:
100 – 97.5 = 2.5 → 「CPU使用率は2.5%」
🔹 free -m | awk '/Mem:/ {printf(“%.1f", $3/$2*100)}’
📌 何をしているの?
→ free -m でメモリの使用状況を確認し、「メモリ使用率(%)」を計算しています。
$3:使用中のメモリ(MB)$2:合計メモリ(MB)$3 / $2 * 100:使用率(%)を計算%.1f:小数点1桁に整形
🔍 例えば:
Mem: 7954 4356 3598
なら、4356 / 7954 * 100 ≒ 54.7%
🔹 echo “…,…,…" >> resource_log"$(date “+%Y-%m-%d")".csv
📌 何をしているの?
→ これまでに取得した「日時,CPU使用率,メモリ使用率」を1行にまとめて、resource_log日付.csv というファイルに追記(追加書き込み)しています。
>>:追記(上書きしない)echo:出力"...":カンマでつないだ文字列
ファイル名に日付も入れておくと、1分ごとなどで自動実行した際に日付でファイルが分けられるので確認作業が簡単になったりログローテーションが容易になったりするので便利です!
出力形式(例)
2025-08-02 16:42:17,7.3,58.6
2025-08-02 16:43:17,4.8,57.1
2025-08-02 16:44:17,6.0,57.9
このように、日時・CPU・メモリの順にカンマで区切ったCSV形式で記録されていきます。
1分おきに実行する場合
このコマンドをシェルスクリプトととして作成しておき、cronに登録すれば1分おきや5分おきにサーバ負荷を記録することができます。
「日付,CPU使用率,メモリ使用率」をCSVに書き込むシェルスクリプト
#!/bin/bash
logfile="/home/hayana/resource_log$(date "+%Y-%m-%d").csv"
echo "$(date '+%Y-%m-%d %H:%M:%S'),$(top -b -n1 | grep '%Cpu(s)' | awk -F',' '{print $4}' | awk '{printf("%.1f", 100 - $1)}'),$(free -m | awk '/Mem:/ {printf("%.1f", $3/$2*100)}')" >> $logfile
これを「log_cpu_mem.sh」というファイル名で保存しておきます。
作成したシェルスクリプトをcronに登録
「/etc/crontab」に作成したシェルスクリプトが定期的に実行されるように登録します。
crontab -e
以下を追加(1分おきに記録する例):
* * * * * hayana /home/youruser/log_cpu_mem.sh
/home/youruser/ は自分の環境に合わせてパスを修正してください。
CSVの中身を確認するには?
cat resource_log日付.csv
または、WindowsやMac端末にログを移送してExcelやスプレッドシートで読み込んでグラフ化も可能です!
あとは、、、CSVにあるリソース情報を読み込んでグラフ化するWebアプリの作成も検討してみてもいいですね!
まとめ
- サーバ負荷を簡単に記録したいときに便利
- CSV形式だから他ツールとの連携も容易
- cronと組み合わせればログ監視や傾向分析にも活用できる
まずは一度手動で実行し、正しく記録されるか確認してみてください!







ディスカッション
コメント一覧
まだ、コメントがありません