Files

46 lines
1.5 KiB
Bash
Raw Permalink Normal View History

2026-05-05 21:44:08 +00:00
#!/usr/bin/env bash
2026-05-08 21:18:22 +00:00
set -euo pipefail
2026-05-05 21:44:08 +00:00
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=00_env.sh
. "$SCRIPT_DIR/00_env.sh"
exit_code=0
section "Disk Space Overview"
if require_cmd df; then
df -h 2>&1 | tee -a "$LOG_FILE"
else
critical "df is required for disk overview"
exit 1
fi
section "Inode Overview"
df -i 2>&1 | tee -a "$LOG_FILE" || warning "Unable to collect inode usage"
section "Filesystems Sorted By Usage"
df -P -h | awk 'NR == 1 { next } { print $5, $6, $1, $2, $3, $4 }' | sort -rn | while read -r used mount fs size used_space avail; do
percent="$(usage_percent_number "$used")"
level="$(status_for_percent "$percent")"
printf '%s: %s used on %s (%s, size=%s used=%s avail=%s)\n' "$level" "$used" "$mount" "$fs" "$size" "$used_space" "$avail" | tee -a "$LOG_FILE"
done
section "Threshold Summary"
while read -r fs size used avail pct mount; do
percent="$(usage_percent_number "$pct")"
level="$(status_for_percent "$percent")"
if (( percent >= EMERGENCY_THRESHOLD )); then
critical "$mount is ${pct} full on $fs (size=$size used=$used avail=$avail)"
exit_code=1
elif (( percent >= CRIT_THRESHOLD )); then
warning "$mount is ${pct} full on $fs (size=$size used=$used avail=$avail)"
elif (( percent >= WARN_THRESHOLD )); then
warning "$mount is ${pct} full on $fs (size=$size used=$used avail=$avail)"
else
ok "$mount is ${pct} full on $fs"
fi
done < <(df -P -h | awk 'NR > 1 { print $1, $2, $3, $4, $5, $6 }')
exit "$exit_code"