feat: add bash infra installer and diagnostic functions
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.
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user