feat: initial infrastructure baseline
This commit is contained in:
Executable
+74
@@ -0,0 +1,74 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# saTway Maintenance Script
|
||||
# Version: 1.0.0
|
||||
# Target: mw-pfeddersheim-workstation
|
||||
|
||||
LOG_FILE="/var/log/satway/maintenance-$(date +%Y%m%d).log"
|
||||
|
||||
# Ensure log directory exists (needs sudo for /var/log usually, or local if not sudo)
|
||||
# For now we'll log to stdout and optionally a local file if permitted.
|
||||
# If /var/log/satway is not writeable, fallback to local log.
|
||||
mkdir -p "$HOME/logs" 2>/dev/null || true
|
||||
LOCAL_LOG="$HOME/logs/maintenance-$(date +%Y%m%d).log"
|
||||
|
||||
echo "--- Starting saTway Maintenance $(date) ---" | tee -a "$LOCAL_LOG"
|
||||
|
||||
# 1. System Update Check
|
||||
echo "[1/4] Checking for system updates..." | tee -a "$LOCAL_LOG"
|
||||
if command -v checkupdates &> /dev/null; then
|
||||
checkupdates | tee -a "$LOCAL_LOG"
|
||||
elif command -v pacman &> /dev/null; then
|
||||
echo "Use 'sudo pacman -Syu' to update system packages." | tee -a "$LOCAL_LOG"
|
||||
fi
|
||||
|
||||
# 2. System Optimization (Journald & Packages)
|
||||
echo "[2/6] Optimizing system logs and package cache..." | tee -a "$LOCAL_LOG"
|
||||
if command -v journalctl &> /dev/null; then
|
||||
echo "Pruning systemd journal logs..." | tee -a "$LOCAL_LOG"
|
||||
sudo journalctl --vacuum-time=7d --vacuum-size=500M 2>&1 | tee -a "$LOCAL_LOG" || echo "Journald vacuum failed (requires sudo)" | tee -a "$LOCAL_LOG"
|
||||
fi
|
||||
|
||||
if command -v paccache &> /dev/null; then
|
||||
echo "Cleaning Arch package cache (keeping last 2)..." | tee -a "$LOCAL_LOG"
|
||||
sudo paccache -rk2 2>&1 | tee -a "$LOCAL_LOG" || echo "paccache failed (requires sudo)" | tee -a "$LOCAL_LOG"
|
||||
fi
|
||||
|
||||
if command -v pacman &> /dev/null; then
|
||||
echo "Checking for orphaned packages..." | tee -a "$LOCAL_LOG"
|
||||
ORPHANS=$(pacman -Qtdq) || ORPHANS=""
|
||||
if [ -n "$ORPHANS" ]; then
|
||||
echo "Removing orphaned packages: $ORPHANS" | tee -a "$LOCAL_LOG"
|
||||
sudo pacman -Rns --noconfirm $ORPHANS | tee -a "$LOCAL_LOG"
|
||||
else
|
||||
echo "No orphaned packages found." | tee -a "$LOCAL_LOG"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 3. Docker Cleanup
|
||||
if command -v docker &> /dev/null; then
|
||||
echo "[3/6] Cleaning up Docker resources..." | tee -a "$LOCAL_LOG"
|
||||
echo "Pruning unused docker data..." | tee -a "$LOCAL_LOG"
|
||||
# Use prune safely for unused data
|
||||
docker system prune -f 2>&1 | tee -a "$LOCAL_LOG"
|
||||
echo "Pruning unused docker volumes (RECLAIMABLE)..." | tee -a "$LOCAL_LOG"
|
||||
docker volume prune -f 2>&1 | tee -a "$LOCAL_LOG"
|
||||
fi
|
||||
|
||||
# 4. pnpm/npm check
|
||||
if command -v pnpm &> /dev/null; then
|
||||
echo "[4/6] Checking global pnpm packages..." | tee -a "$LOCAL_LOG"
|
||||
pnpm list -g --depth 0 | tee -a "$LOCAL_LOG"
|
||||
echo "Suggested: pnpm store prune" | tee -a "$LOCAL_LOG"
|
||||
fi
|
||||
|
||||
# 5. Git Repos Status
|
||||
echo "[5/6] Checking infra repo status..." | tee -a "$LOCAL_LOG"
|
||||
git status | tee -a "$LOCAL_LOG"
|
||||
|
||||
# 6. Disk Space Check (after cleanup)
|
||||
echo "[6/6] Current disk usage summary:" | tee -a "$LOCAL_LOG"
|
||||
df -h / | tail -n 1 | tee -a "$LOCAL_LOG"
|
||||
|
||||
echo "--- Maintenance Complete $(date) ---" | tee -a "$LOCAL_LOG"
|
||||
Reference in New Issue
Block a user