サーバーの状態を定期的にレポートするスクリプトを作ります。CPU・メモリ・ディスクの使用状況をまとめます。
システム情報収集スクリプト
#!/bin/bash
REPORT="/tmp/sysreport_$(date +%Y%m%d).txt"
{
echo "===== システムレポート: $(hostname) ====="
echo "日時: $(date)"
echo "--- メモリ ---"
free -h
echo "--- ディスク ---"
df -h
echo "--- ロードアベレージ ---"
uptime
} > "$REPORT"
cat "$REPORT"
閾値チェック付きアラート
#!/bin/bash
# ディスク使用率80%超でアラート
df -h | awk NR>1 {gsub(/%/,"",$5); if($5+0>80) print "警告: "$6" "$5"%"}
まとめ
- free・df・uptimeでシステム状態を取得できる
- 波括弧
{ }でコマンド出力をまとめてリダイレクトできる - cronと組み合わせて日次レポートを自動送信できる
主要コマンドの詳細解説
free -h(メモリ情報)
free -hはメモリの使用状況を人間が読みやすい単位(MB・GB)で表示するコマンドです。totalが総メモリ量、usedが使用中、availableが実際に利用可能なメモリ量を示します。buff/cacheはカーネルがバッファやキャッシュとして使用している領域で、必要に応じて解放されます。
df -h(ディスク使用量)
df -hはマウント済みのファイルシステムのディスク使用量を表示します。Use%列に使用率が表示され、この値が80〜90%を超えたらディスクの増設やファイル整理を検討する目安になります。/tmpや/var/logなど特定のパーティションだけを確認したい場合はdf -h /var/logのようにパスを指定します。
uptime(ロードアベレージ)
uptimeはシステムの稼働時間と1分・5分・15分のロードアベレージを表示します。ロードアベレージはCPUの処理待ちキューの平均長さを示し、CPUコア数以下であれば余裕がある状態です。たとえば4コアのサーバーでロードアベレージが4.0前後であれば「ほぼフル稼働」の状態です。
スクリプトの応用:メール送信との組み合わせ
収集したレポートファイルをメールで送信するには、mailコマンドまたはsendmailが必要です。サーバーにmailutils(Debian/Ubuntu系)をインストールしてmail -s "日次レポート" admin@example.com < "$REPORT"のように送信します。また、crontabに登録して毎朝9時に自動実行するといった運用が一般的です。
よく使うシステム監視コマンド一覧
| コマンド | 確認できる情報 | 主なオプション |
|---|---|---|
free | メモリ・スワップ使用量 | -h(人間向け表示)、-s 5(5秒ごとに更新) |
df | ディスク使用量 | -h(人間向け表示)、-T(ファイルシステム種別表示) |
uptime | 稼働時間・ロードアベレージ | オプションなし |
top | プロセスごとのCPU・メモリ使用状況 | -b -n 1(バッチモードで1回取得) |
vmstat | CPU・メモリ・I/Oの統計 | 1 5(1秒間隔で5回) |
iostat | ディスクI/O統計 | -x 1(詳細を1秒間隔) |
まとめ
free -h・df -h・uptimeでサーバーの基本的な状態を把握できる- 波括弧
{ }を使うと複数コマンドの出力をまとめてファイルに書き出せる - ディスク使用率80%超・ロードアベレージがCPUコア数超えを閾値としてアラートを設定するのが一般的
- cronと
mailコマンドを組み合わせて日次レポートをメール送信する運用が実務でよく使われる



コメント