「df -P」の「-P」とは?
-PはPOSIX形式で出力するオプションです。
通常のdfコマンドは、ファイルシステム名が長い場合などに改行されることがあります。
一方、df -PはPOSIXで定められた形式で出力するため、ファイルシステムを1行で表示することができます。
なぜ運用ではdf -Pが使われるのか?
df -Pを使うことで、POSIXで定められた形式に従った出力を得られるため、スクリプトで解析しやすくなるためです。
サーバー運用では、「ディスク使用率が○%を超えたら自動で処理を実行する」という運用がよくあります。
例えば、
- ディスク使用率が80%以上になったら古いログを削除
- ディスク使用率が90%以上になったらメール通知
- ディスク使用率が95%以上になったらサービスを停止
このような処理でディスク使用率を正確に取得するためにdf -Pが使われます。
よく使われるのが次のコマンドです。
df -P / | awk 'NR==2 {gsub("%","",$5); print $5}'
このコマンドではルート直下のディスク使用率を取得し%を取り除いて表示することができます。
出力例

11
df -P /ではルートだけを対象にするため、出力はヘッダー+ルートファイルシステムの2行になります。そのためawkのNR==2で2行目、$5で5列目(Capacity)を指定することで使用率を取得しています。
gsub("%","",$5)では、取得した使用率11%から%を取り除いて11という数値にしています。

取得した数値を条件分岐に利用できます。
USED=$(df -P / | awk 'NR==2 {gsub("%","",$5); print $5}')
if [ "$USED" -ge 80 ]; then
echo "ディスク使用率80%以上"
fi
実際の運用例
私が携わった運用では、ルートファイルシステムの使用率が80%を超えた場合に、日付付きログやdeadletterファイルを削除する仕組みを検討しました。
イメージは次のような流れです。
1. cronで定期実行
│
▼
df -P / でルートファイルシステムの使用率を取得
│
▼
80%以上?
│ │
No Yes
│ │
終了 古いログ・deadletterを削除
│
▼
容量を確保
df -hとの違い
-hは容量を人間が読みやすい単位で表示するためのオプションです。
| コマンド | 向いている用途 |
|---|---|
df -h | 人が画面で容量を確認する |
df -P | シェルスクリプトで解析する |


まとめ
df -Pは「POSIX形式で表示する」というシンプルなオプションですが、運用現場では重要な役割を果たします。
特に、ディスク使用率を条件にログ削除やアラート通知を行うスクリプトでは、出力形式が固定されるdf -Pを利用することで、環境差異による誤動作を防ぎやすくなります。

コメント