¿Por qué los comandos "df" y "du" muestran un uso diferente del disco?

26

No puedo acceder al sistema ubuntu en mi PC, el mensaje de error: " el sistema se ejecuta en modo de gráficos bajos " e intenté algunos comandos que busqué en Internet.

Descubrí un problema que parece que no hay espacio disponible en el disco. Utilicé los comandos " df " y " du " para verificar, los resultados son los siguientes:

du -j --max-depth=1
23G  ./home
3.3G ./usr 
...... 
28G

y

df -Th 
filesystem   Type   size    used   available   use%    mounted on 
/dev/sda5    ext4   68G     68G    0           100%    /

¿Cómo limpiaría el sistema para obtener más espacio en disco?

usuario2068965
fuente
La pregunta en el título y al final del cuerpo de la pregunta es bastante diferente. Algunas respuestas están relacionadas con una pregunta, algunas con la otra. Debe aclarar sus necesidades reales y posiblemente aceptar una respuesta también.
Melebius

Respuestas:

50

Lo más probable es que sepa que puede eliminar un archivo que todavía está en uso por alguna aplicación y para esta aplicación permanece disponible. Esto se debe a que el descriptor de archivo en / proc / filesystem se mantiene abierto.

Entonces, si hay tales descriptores abiertos para los archivos ya eliminados, el espacio ocupado por ellos se considera como utilizado por df(y dfes correcto), pero no se puede tener en cuenta duporque ya no hay nombres de archivo asociados con ellos.

Puede encontrar todos los archivos abiertos desvinculados pero retenidos con:

# lsof | grep '(deleted)'
Dmitry Alexandrov
fuente
77
Esto solo me salvó. No tenía idea de por qué mi disco estaba lleno, pero du dijo que estaba vacío. Un identificador de archivo abierto para un archivo de 8GB
Cheyne
55
¿Como puedo eliminar los enlaces?
Vikas Hardia
1
A veces es necesario ejecutar esto como root para ver los archivos eliminados que los procesos de otros usuarios mantienen abiertos.
Envek
1
La causa principal de esto para mí terminó siendo una especificación de archivo de registro incorrecta en uno de mis /etc/logrotate.darchivos. A la entrada incorrecta le faltaba una rutina de postrotación, lo que hizo que mi proceso de demonio no soltara sus archivos rotados / eliminados.
Dale Anderson
¿Cómo podría eliminar esos archivos desvinculados pero abiertos?
zx1986
14

¿Como puedo eliminar los enlaces? - Vikas Hardia 22 de agosto de 14 a 5:46

Debe encontrar el proceso que contiene el identificador de archivo. Usa el comando de Dmitry Alexandrov, ahí verás el proceso y pid. En nuestro caso, el archivo de registro de barniz "antiguo" fue el asesino espacial.

# lsof | grep '(deleted)'
[...]
varnishlo 13978       varnishlog    3w      REG              252,1 318448027646    5926973 /var/log/varnish/varnish.log.1 (deleted)
apache2   16801         www-data    2w      REG              252,1        64550   13110120 /var/log/apache2/error.log.1 (deleted)
[...]
# service varnishlog stop
[or if there is no service script]
# kill -11 13978 (the second number of the lsof command is the pid)
[or may be] 
# kill -9 13978

No olvide iniciar el servicio o el proceso nuevamente si es un demonio o algún otro servicio en su computadora. Si puede, simplemente reinicie la computadora;)

Octeny
fuente
9

Ok, revisemos las páginas del manual:

df: informe del uso del espacio en disco del sistema de archivos

y

du: estimar el uso del espacio de archivos

Esas dos herramientas estaban destinadas a propuestas diferentes. Si bien dfes para mostrar el uso del sistema de archivos, dues para informar el uso del espacio de archivos. dufunciona a partir de archivos mientras dftrabaja a nivel de sistema de archivos, informando lo que el núcleo dice que tiene disponible. Continúe leyendo la página de dumanual de soporte esto:

Resuma el uso del disco de cada ARCHIVO , de forma recursiva para los directorios.

dice que dufunciona con archivos.

dfmuestra la cantidad de espacio en disco disponible en el sistema de archivos que contiene cada argumento de nombre de archivo. Si no se proporciona ningún nombre de archivo, se muestra el espacio disponible en todos los sistemas de archivos actualmente montados.

Aquí dice que dfno le importan los archivos sino el sistema de archivos en sí.

Braiam
fuente
du use se puede modificar con el carácter -x, para indicarle que solo cuente archivos en el sistema de archivos dado.
macetw
1

Dicho simplemente:

Corriste dusin permisos de root. Así que no es capaz de comprobar el espacio disponible en /proc, /mnt, etc, carpetas.

df mostró el total utilizado y el espacio libre respectivamente.

Entonces, cuando verifique el sistema de archivos raíz de Linux, tome el duinforme como final.

Sekra Invos
fuente
0
df

Resumir espacio libre en disco

Muestra la cantidad de espacio disponible en disco.

du

Resume el uso del disco.

Muestra la cantidad de espacio en disco utilizado.

Mitch
fuente
Sí, pero en el resultado de "df-Th", mostró 68G utilizado. Hoy por la mañana, cuando intento acceder al sistema ubuntu, todavía aparece el mensaje "el sistema se está ejecutando en modo de gráficos bajos", pero cuando verifico el uso de la memoria, los comandos "df" y "du" muestran un resultado razonable. Pero, ¿cuál es el problema con el "modo de gráficos bajos"?
user2068965
Echa un vistazo a esto .
Mitch
0

nada tan confuso: aquí está la mirada: =

1) du == Uso del disco
¿Cuánto espacio en disco utilizan estos archivos?

2) df == Disco libre
¿Cuánto espacio libre en disco tenemos?

También para el sistema se ejecuta en modo de gráficos bajos ' aquí '

Avani badheka
fuente
0

yo si
sudo du -hxa / | egrep '^[[:digit:]]{1,1}G[[:space:]]*'

¡Explicó exactamente la gran discrepancia de 21GB que estaba viendo!
El archivo en cuestión era / swap file si 21GB !!

usuario727981
fuente