Skip to content

Disk Usage Check

Monitor / disk usage and log threshold alerts.

Behavior

  • Uses df -P to read usage for MOUNT (default /).
  • Sends an alert when usage exceeds THRESHOLD (default 80).
  • Appends timestamped entries to /var/log/disk-usage-check.log.

Usage

1) Save the script as disk_usage.sh. 2) Make it executable: chmod +x disk_usage.sh. 3) Run it: ./disk_usage.sh (use sudo if the log path requires it).

Script

#!/usr/bin/env bash
set -euo pipefail

THRESHOLD=80
MOUNT="/"
LOG_FILE="/var/log/disk-usage-check.log"

# Ensure log directory exists
LOG_DIR="$(dirname "$LOG_FILE")"
mkdir -p "$LOG_DIR" 2>/dev/null || true

# Get usage % for the mount
USAGE_PCT="$(df -P "$MOUNT" | awk 'NR==2 {gsub("%","",$5); print $5}')"

TS="$(date '+%Y-%m-%d %H:%M:%S')"

if [[ -z "${USAGE_PCT}" ]]; then
  echo "$TS ERROR: Could not read disk usage for $MOUNT" | tee -a "$LOG_FILE"
  exit 2
fi

if (( USAGE_PCT > THRESHOLD )); then
  MSG="$TS ALERT: Disk usage on $MOUNT is ${USAGE_PCT}% (threshold: ${THRESHOLD}%)"
  echo "$MSG" | tee -a "$LOG_FILE"
  exit 1
else
  echo "$TS OK: Disk usage on $MOUNT is ${USAGE_PCT}% (threshold: ${THRESHOLD}%)" >> "$LOG_FILE"
fi

Exit codes

  • 0: OK (under threshold).
  • 1: Alert (over threshold).
  • 2: Error reading usage.