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 perodu
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.