
Estoy usando Ubuntu 14.04. Desde hace algún tiempo no puedo ejecutar más programas simultáneamente. Esto es lo que df -h
da:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 29G 25G 3.4G 88% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 16G 4.0K 16G 1% /dev
tmpfs 3.2G 724K 3.2G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 16G 59M 16G 1% /run/shm
none 100M 40K 100M 1% /run/user
/dev/sda2 438G 138M 416G 1% /scratch
AFS 8.6G 0 8.6G 0% /afs
y de df -i
:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 1875968 1875968 0 100% /
none 4106915 11 4106904 1% /sys/fs/cgroup
udev 4103190 499 4102691 1% /dev
tmpfs 4106915 524 4106391 1% /run
none 4106915 3 4106912 1% /run/lock
none 4106915 122 4106793 1% /run/shm
none 4106915 27 4106888 1% /run/user
/dev/sda2 29138944 709 29138235 1% /scratch
AFS 9000000 0 9000000 0% /afs
También probé la sugerencia aquí:bash: echo: error de escritura: no queda espacio en el dispositivo, no ayuda, en realidad lo empeora. Ahora, si entro a la terminal y escribo parcialmente el nombre de una carpeta, presiono Tab y me sale:
cd Pybash: cannot create temp file for here-document: No space left on device
donde solo queria escribir
cd Python
Editar: La salida de sudo du -hxd1 /
es:
1.5G /var
22G /usr
18M /etc
16K /lost+found
36K /home
349M /opt
68K /tmp
9.7M /bin
4.2M /libx32
12K /.config
2.5M /root
4.0K /mnt
4.0K /lib64
13M /sbin
81M /boot
505M /lib
3.5M /lib32
12K /media
4.0K /srv
25G /
Respuesta1
El espacio no es el problema aquí. Tiene un directorio con muchos archivos vacíos (o casi vacíos). Cada uno de ellos toma un inodo y los has usado todos. Encuentra ese directorio:
for i in /* ; do echo "$i" ; find "$i" | wc -l ; done
(Debes hacer esto como root). Esto probablemente mostrará un directorio con una gran cantidad de archivos. Profundice hasta encontrar los archivos que han agotado sus inodos. Elimina todos esos archivos. Entonces estarás bien por el momento. El origen de estos archivos es, por supuesto, otra historia.
Respuesta2
Como puede ver en df -h
, todavía le queda espacio en su partición raíz. Sin embargo, df -i
muestra que se ha quedado sin inodos. En mi computadora, tengo 7.3G usados en mi partición raíz, pero solo se usan 320,000 inodos, por lo que probablemente tengas muchos archivos muy pequeños obstruyendo las cosas en alguna parte.
Para una discusión sobre dónde, ver, por ejemploStack Exchange: encuentre dónde se utilizan los inodos. Intentaría lo siguiente desde esa página:
sudo find / -xdev -printf '%h\0' | sort -z | uniq -cz | sort -nrzk 1 | tr '\0' '\n' | head -n 50
Si tiene una versión más reciente de Ubuntu (por ejemplo, 15.10), este comando más corto también podría ser más rápido:
sudo du / --inodes -xS | sort -rh | head -n 50
Cualquiera de los dos le dará una lista de directorios ordenados según la cantidad de inodos que están utilizando. Probablemente encontrará uno con un número muy alto (probablemente esté en /var
alguna parte). Esto debería darle una idea de qué archivos puede eliminar, pero si tiene alguna pregunta, vuelva a preguntar aquí primero.
Como referencia de lo que podría ser normal, en mi computadora (que ejecuta Ubuntu 15.10), obtengo el siguiente resultado de ese comando:
3297 /usr/share/app-install/desktop
3022 /usr/share/man/man3
2325 /usr/bin
2149 /usr/share/man/man1
2104 /usr/share/app-install/icons
1816 /usr/lib/x86_64-linux-gnu
1089 /usr/src/linux-headers-4.2.0-19/include/linux
1089 /usr/src/linux-headers-4.2.0-18/include/linux
1089 /usr/src/linux-headers-4.2.0-16/include/linux
...
Aquí hay una explicación del comando más simple. sudo
es necesario para ejecutar el comando du como root, para que podamos encontrar archivos en carpetas que su usuario normal quizás no pueda leer. du /
proporciona el uso del disco del directorio raíz /
; --inodes
le dice que enumere el uso de inodos, -S
que solo enumere archivos en el directorio mismo y no en subdirectorios, y -x
que no cruce los límites del sistema de archivos (ya que su problema definitivamente está activado /
y no activado, por ejemplo /scratch
). Luego canalizamos la salida de ese comando para sort
encontrar a los peores infractores; -r
invierte la clasificación para que los más grandes estén en la parte superior y -h
ordena numéricamente y no alfabéticamente. Finalmente, head -n 50
solo genera las primeras 50 líneas (es decir, los 50 peores infractores).
Aquí hay una explicación del comando más complicado. sudo
es necesario para ejecutar el comando de búsqueda como root, de modo que podamos buscar archivos en carpetas que su usuario normal quizás no pueda leer. find /
da una lista de todos los archivos en el directorio raíz /
; -xdev
le indica find
que no cruce los límites del sistema de archivos (ya que su problema definitivamente está activado /
y no activado, por ejemplo /scratch
); -printf '%h\0'
imprime el nombre del directorio que termina en un byte cero. Luego canalizamos la salida de ese comando sort -z
y luego uniq -cz
contamos cuántas veces se imprimió cada directorio (es decir, cuántos archivos hay en cada directorio); sort
Es necesario aquí ya que uniq
necesita una lista ordenada. Luego seleccionamos para encontrar a los peores infractores; -r
invierte la clasificación para que los más grandes estén en la parte superior y -n
ordena numéricamente y no alfabéticamente. tr '\0' '\n'
reemplaza cero bytes con nuevas líneas. Finalmente, head -n 50
solo genera las primeras 50 líneas (es decir, los 50 peores infractores).