194663a379
10 funciones Bash del dominio infra: instaladores de herramientas de desarrollo (install_go, install_nodejs, install_pnpm, install_python312, install_uv, install_volta, install_wails), diagnostico del sistema (analyze_disk_space, detect_wsl, list_listening_ports). Automatizan la configuracion del entorno de desarrollo en Linux/WSL.
94 lines
2.7 KiB
Bash
94 lines
2.7 KiB
Bash
#!/usr/bin/env bash
|
|
# analyze_disk_space
|
|
# ------------------
|
|
# Analiza el uso de espacio en disco: particiones, directorios más grandes,
|
|
# archivos más grandes e inodos.
|
|
#
|
|
# USO:
|
|
# source analyze_disk_space.sh
|
|
# analyze_disk_space [target_dir] [mode]
|
|
#
|
|
# ARGUMENTOS:
|
|
# target_dir Directorio a analizar (default: /)
|
|
# mode Modo de análisis: partitions|top-dirs|top-files|inodes|all (default: all)
|
|
|
|
analyze_disk_space() {
|
|
local target_dir="${1:-/}"
|
|
local mode="${2:-all}"
|
|
|
|
_ads_partitions() {
|
|
echo "=== Espacio en sistemas de archivos ==="
|
|
df -h --output=source,fstype,size,used,avail,pcent,target 2>/dev/null \
|
|
| grep -v "tmpfs\|devtmpfs\|loop" | column -t
|
|
echo ""
|
|
|
|
local high_usage
|
|
high_usage="$(df -h | awk 'NR>1 && $5+0 > 90 {print $6, $5}' | grep -v "tmpfs\|devtmpfs" || true)"
|
|
if [[ -n "$high_usage" ]]; then
|
|
echo "ADVERTENCIA: Discos con uso >90%:"
|
|
echo "$high_usage"
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
_ads_top_dirs() {
|
|
local dir="${1:-.}"
|
|
echo "=== Top 10 carpetas más grandes en: $(realpath "$dir") ==="
|
|
du -h --max-depth=1 "$dir" 2>/dev/null | sort -rh | head -11 \
|
|
| awk '{printf "%-10s %s\n", $1, $2}'
|
|
echo ""
|
|
}
|
|
|
|
_ads_top_files() {
|
|
local dir="${1:-.}"
|
|
echo "=== Top 20 archivos más grandes en: $(realpath "$dir") ==="
|
|
find "$dir" -type f -exec du -h {} + 2>/dev/null | sort -rh | head -20 \
|
|
| awk '{printf "%-10s %s\n", $1, $2}'
|
|
echo ""
|
|
}
|
|
|
|
_ads_inodes() {
|
|
echo "=== Inodos disponibles ==="
|
|
df -i 2>/dev/null | grep -v "tmpfs\|devtmpfs\|loop" | column -t
|
|
echo ""
|
|
|
|
local high_inodes
|
|
high_inodes="$(df -i | awk 'NR>1 && $5+0 > 90 {print $6, $5}' | grep -v "tmpfs\|devtmpfs" || true)"
|
|
if [[ -n "$high_inodes" ]]; then
|
|
echo "ADVERTENCIA: Sistemas de archivos con >90% de inodos usados:"
|
|
echo "$high_inodes"
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
case "$mode" in
|
|
partitions)
|
|
_ads_partitions
|
|
;;
|
|
top-dirs)
|
|
_ads_top_dirs "$target_dir"
|
|
;;
|
|
top-files)
|
|
_ads_top_files "$target_dir"
|
|
;;
|
|
inodes)
|
|
_ads_inodes
|
|
;;
|
|
all)
|
|
_ads_partitions
|
|
_ads_top_dirs "$target_dir"
|
|
_ads_top_files "$target_dir"
|
|
_ads_inodes
|
|
;;
|
|
*)
|
|
echo "analyze_disk_space: modo desconocido '${mode}'. Usa: partitions|top-dirs|top-files|inodes|all" >&2
|
|
return 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Ejecutar si se invoca directamente
|
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
analyze_disk_space "$@"
|
|
fi
|