¿Quién está llenando mi disco?

9

Tengo mi disco primario completamente lleno:

root@kodi:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           385M   12M  374M   3% /run
/dev/sda1        88G   84G     0 100% /
tmpfs           1.9G  4.0K  1.9G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sdb1       917G  429G  442G  50% /media/Cloud
/dev/sdd1       917G  813G   58G  94% /media/Tera
cgmfs           100K     0  100K   0% /run/cgmanager/fs
tmpfs           385M     0  385M   0% /run/user/1000
root@kodi:/#

/ dev / sda1 es mi disco primario donde está instalado ubuntu:

root@kodi:/home/fmf# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=9fab4895-7ccb-4415-b26d-311a17036cda       /               ext4    errors=remount-ro 0       1

# swap was on /dev/sda5 during installation
UUID=7b158f58-e4c1-4717-aa5f-dbeaa79ab93c       none            swap    sw              0       0

UUID=f9079f52-7661-48ad-9bc4-0d2452be66af       /media/Tera     ext2    defaults,nofail 0       0
UUID=fb1f92ee-54f5-44f8-ba92-544e90e6dfeb       /media/Cloud    ext2    defaults,nofail 0       0

root@kodi:/home/fmf#

Hice una búsqueda en Google y encontré algunos comandos para probar quién es el responsable, pero no puedo entender quién lo está llenando:

root@kodi:/# du --exclude=/media -cksh * | sort -hr | head -n 15
du: cannot access 'proc/16360/task/16360/fd/3': No such file or directory
du: cannot access 'proc/16360/task/16360/fdinfo/3': No such file or directory
du: cannot access 'proc/16360/fd/3': No such file or directory
du: cannot access 'proc/16360/fdinfo/3': No such file or directory
1.3T    total
1.3T    media
3.5G    home
3.0G    usr
1010M   var
645M    root
630M    lib
99M     boot
17M     bin
15M     sbin
13M     etc
12M     run
196K    tmp
16K     lost+found
12K     srv
root@kodi:/#

Aparentemente no hay ningún archivo o directorio tan grande para llenar el 84G de mi disco.

Hace unos días descubrí que el disco estaba lleno debido a errores .xsession que se volvieron locos. Encontré que este es un error conocido en ubuntu y resolví crear una línea crontab que cada diez minutos elimina errores .xsession. De hecho, ahora ya no lo tengo en mi directorio personal.

¿Alguna ayuda, por favor?

effemmeffe
fuente
No tengo errores .xsession, el cronjob lo eliminó. No entiendo a qué te refieres con los releses oficiales de Ubuntu: tengo Ubuntu 16.04.1 LTS.
effemmeffe
2
Para ver si hay archivos eliminados a los que todavía se accede mediante algún proceso, sudo lsof | grep deletedse darán pistas.
ridículo
El comentario de @ ridgy es perfecto. Si su .xsession-errorsproblema es culpable, eso lo resaltará; de lo contrario, es muy probable que te indique la dirección correcta.
un CVn
44
@effemmeffe En UNIX, eliminar un archivo en realidad no lo elimina hasta que se cierra el último identificador (es por eso que siempre puede eliminar un archivo en UNIX, donde en Windows obtendría errores de "acceso denegado", etc.). Entonces, el archivo .xsession-errors todavía está allí , llenando el espacio en su disco, porque lo que sea que esté registrando los errores mantiene el archivo abierto. La mejor manera de solucionar esto correctamente es descubrir qué causa los errores y solucionarlo.
Muzer
1
Si el problema es con los identificadores de archivos abiertos en los archivos eliminados, reiniciar el sistema debería "devolverle mágicamente" todo el espacio faltante. Puede ser un paso útil para solucionar problemas.
Floris

Respuestas:

19

El problema con su cronjob es que .xsession_errorses probable que algunas aplicaciones o servicios del sistema todavía lo abran, por lo que estará oculto de la tabla del sistema de archivos cuando se elimine, pero todavía está en el disco y aún se escribirán errores en él.
Entonces llenará el disco, pero ahora ya no puede verlo.

@rinzwind apunta exactamente a este comportamiento cuando él (correctamente) sugiere eliminar el cronjob y buscar los errores. Esta es la única forma de solucionar este problema correctamente.

Como solución alternativa, puede truncar el .xsession_errorsarchivo con un cronjob como este:

17 */2 * * *  truncate -cs 0 path/to/.xsession_errors

Pero antes de hacerlo, REALMENTE debería intentar solucionar los problemas subyacentes que crean esos mensajes de error en .xsession_errors

Phillip -Zyan K Lee- Stockmann
fuente
@terdon Me gusta más / etc / crontab: = D
Rinzwind
1
@Rinzwind no es para modificar archivos en el directorio de inicio de un usuario. ¡Al menos ejecútelo como usuario y no como root!
terdon el
@terdon, @rinzwind, ambos tienen razón: debería haber prestado atención. tener este script ejecutado como usuario rootsería descuidado y podría crear otros problemas.
Phillip -Zyan K Lee- Stockmann
2
la rotación tiene el mismo problema que con la eliminación: kodi no reconocerá que el archivo está rotado y continuará escribiendo allí, hasta que le notifique que vuelva a abrir este archivo. (lo más probable es que no exista tal cosa y deba reiniciar kodi)
Phillip -Zyan K Lee- Stockmann
1
@terdon truncate -cno creará un archivo y no cambiará la propiedad del archivo existente. Es bueno no ejecutarlo como root, pero la propiedad del archivo no es un motivo.
hobbs
10

¿Quién está llenando mi disco?

desde que haces esto ...

Encontré que este es un error conocido en ubuntu y resolví crear una línea crontab que cada diez minutos elimina errores .xsession

Es imposible responder a esta pregunta.

Siga lo siguiente para obtener los errores que necesitamos ver:

  • Elimine esa línea crontab que agregó que elimina .xsessions_errors.
  • Reinicie el equipo y comprobar desde la línea de comandos lo que está llenando .xsessions_errorsel uso tail -f 100 ~/.xsessions_errors.
  • Cuando encuentre problemas que se repiten mucho, copie algunos de ellos en su pregunta.
  • Agregue la línea crontab para que pueda usar su sistema.
  • Espere una solución para el problema y presente la solicitud Luego, elimine la línea crontab nuevamente ( .xsessions_errorssiempre se debe evitar eliminar el archivo).
Rinzwind
fuente
77
"Cuando encuentre problemas que se repiten mucho, copie algunos de ellos en su pregunta". No, esa sería una pregunta nueva y diferente.
ligereza corre en órbita el
Seguimiento: eliminé el crontab y ahora el archivo .xsession-errors es libre de crecer. Pero no lo es. Y mi espacio en disco sigue cayendo. Entonces el problema no estaba allí. Un reinicio detiene el funcionamiento del disco, pero me gustaría no reiniciar la máquina todos los días. ¿Cualquier pista?
effemmeffe
3

Cuando hay grandes diferencias (por ejemplo, más de un pequeño porcentaje) entre (como raíz) df -g /some/partition_rooty du -gx /some/partition_root( -xle dice a du que se limite a la misma partición, útil para verificar '/' por ejemplo): probablemente todavía haya archivos. abierto en el que algunos procesos todavía están escribiendo, pero que eliminó en el disco (por lo tanto: el archivo todavía existe mientras los procesos lo abran y llene el espacio en disco (df -g ve eso) pero como no hay enlaces más largos (o nombres de archivo) a sus inodos, du -gx los echa de menos.

En su caso, compare las salidas de:

df -g /
du -gx /

Para averiguar cuáles son los archivos con menos de 1 enlaces (es decir, archivos eliminados pero aún abiertos):

lsof -nP +L1  /

Verifique los nombres de proceso y los pids para ver cuáles son los procesos que escriben en esos archivos "fantasmas", y actúe en consecuencia (algunos pueden detenerse / iniciarse, y cuando se detengan, el archivo se liberará y se liberará su espacio, otros pueden necesitar un reinicio adecuado)

Olivier Dulac
fuente
df -g no es un comando válido en mi ubuntu: root @ kodi: / home / fmf # df -g / df: opción no válida - 'g'
effemmeffe
@effemmeffe: luego use la opción apropiada (-k si aix, -h en solaris) y use la correspondiente para du ...
Olivier Dulac
No puedo obtener de su respuesta lo que debería hacer la opción -g, así que no puedo buscar la opción equivalente, ¿puede detallar, por favor?
effemmeffe 01 de
-g en linux en df o du muestra el tamaño en gigabites
Olivier Dulac
No lo hace en mi ubuntu. De todos modos, lo tengo, gracias.
effemmeffe 01 de