El blog de LiveCommerce

Un blog de comercio electrónico y tiendas online

Tutorial: Diagnóstico y liberación de espacio oculto en Debian/Proxmox

Guía completa para detectar y liberar espacio que queda ocupado en disco por archivos borrados pero aún abiertos por procesos vivos. Ideal para contenedores LXC en Proxmox o servidores Linux.

? 1. Diagnóstico inicial con df y du

✅ Comando para ver uso total del disco:

df -h

Ejemplo:

Filesystem      Size  Used Avail Use% Mounted on
/dev/loop8       14G   13G  809M  94% /

✅ Comando para ver uso por carpetas:

du -h / --max-depth=1 | sort -hr | head -n 10

Ejemplo:

5.0G    /
1.9G    /var
1.3G    /root
1.1G    /usr
671M    /tmp

⚠️ Si du muestra mucho menos que df, es porque hay espacio oculto.

? 2. ¿Por qué no coincide el espacio entre df y du?

Porque hay archivos eliminados pero aún abiertos por procesos vivos. El espacio no se libera hasta que mueren esos procesos.

? 3. Detectar archivos abiertos pero eliminados

sudo lsof | grep deleted

Verás líneas como:

chrome 3785737 root ... /tmp/archivo (deleted)

? 4. ¿Cómo liberar ese espacio?

? Matar el proceso manualmente:

kill -9 3785737

O todos de un tipo:

pkill -9 chrome

♻️ Reiniciar el contenedor si no puedes cerrarlos:

pct reboot <ID_DEL_CONTENEDOR>

?️ 5. Cómo evitarlo en el futuro

  • No borres archivos abiertos. Usa:
    truncate -s 0 archivo.log
  • Asegúrate de cerrar siempre Puppeteer o Chrome:
    const browser = await puppeteer.launch();
    await browser.close();
  • No limpies /tmp mientras procesos estén vivos.

? 6. Script para detectar y matar procesos con archivos eliminados

#!/bin/bash

echo "Procesos con archivos borrados:"
lsof | grep deleted | awk '{print $2}' | sort -u | while read pid; do
    name=$(ps -p $pid -o comm=)
    echo "PID $pid - $name"
done

read -p "¿Quieres matarlos todos? [s/N]: " confirm
if [[ "$confirm" == "s" ]]; then
    lsof | grep deleted | awk '{print $2}' | sort -u | xargs -r kill -9
    echo "Procesos eliminados. El espacio debería liberarse."
else
    echo "No se ha hecho nada."
fi

Guarda como liberar_espacio.sh y ejecuta:

chmod +x liberar_espacio.sh
sudo ./liberar_espacio.sh

? 7. Ver cuántos MB están ocupando archivos borrados

sudo lsof +L1 | awk '{if ($7 ~ /^[0-9]+$/) sum+=$7} END {print sum/1024/1024 " MB"}'

? Conclusión

  • Si df muestra disco lleno pero du no lo refleja, hay archivos (deleted) abiertos.
  • Solo se liberan al cerrar los procesos que los usan.
  • Puppeteer, Chrome y otros headless browsers lo causan frecuentemente.
  • Automatiza con script o reinicia el contenedor para liberar todo.
Compártelo:

¿Tienes alguna consulta?

Si tienes alguna pregunta o sabes la respuesta sobre algún comentario, no dudes en contribuir.
Responderemos rápidamente.
Puedes utilizar etiquetas BBCode para escribir negrita, enlaces, imágenes, etc...
Más información en la página oficial de BBCOde http://www.bbcode.org/ Ejemplo:
[url=http://google.com]links[/url], [color=red]colores[/color] [b]negrita[/b]...

¿Has visto los videos en nuestro canal de Youtube?

En nuestro canal de Youtube publicamos periódicamente mejoras y funcionalidades del software de ecommerce.