Ejecutando Ubuntu, abro una terminal y hago
sudo bash
cd /
ls | head -n 1000
Y previsiblemente se devuelven unos 20 directorios.
Sin embargo, si hago un ls, y no lo canalizo a nada, el ls simplemente se cuelga allí hasta que lo mato desde otra terminal. ¿Qué podría estar pasando?
EDITAR:
> type ls
ls is aliased to `ls --color=auto`
EDITAR:
> /bin/ls /
<normal response>
> /bin/ls --color=auto
<hangs indefinitely>
¿Por qué colorear el resultado de ls hace que este comando se bloquee?
shell
command-line
files
ls
Snitse
fuente
fuente

type lspara verificar cualquier posible alias, etc.strace lspuede ayudarlo a identificar el problema.stracemuestra todas las llamadas al sistema realizadas por el programa que invoca./bin/ls(o más biencommand ls) ejecutarlssin las opciones con alias, para confirmar si es la opción de color la que está marcando la diferencia. FWIW,lsapaga la coloración cuando su salida es una tubería u otro dispositivo no terminal.\lsRespuestas:
Si ejecuta ls normalmente, solo mostrará la lista de archivos sin necesidad de ejecutar stat (2) en ninguno de ellos. En otras palabras, no accede a los ARCHIVOS, sino solo al directorio que contiene los archivos.
Si agrega la opción --color, o usa otras opciones ls que necesitan examinar los archivos, entonces ls necesitará stat (2) esos archivos.
Lo más probable es que al menos uno de los archivos en su directorio se esté montando desde un sistema remoto, a través de NFS o similar. Y el servidor desde el que ha montado esa partición no está activo o no responde. Entonces, cuando ls intenta obtener la información sobre ese directorio, se colgará en el kernel esperando que el servidor responda.
Como otros han mencionado, si usa strace, descubrirá a qué directorio ls está intentando acceder cuando se cuelga. Entonces puedes desmontar esa partición montada o lo que sea.
fuente
sshfsmonturas, y la única forma en que podía desmontarlas era matando los procesossshy los relacionadossshfs.