Alguns comandos apenas pendem [fechados]

1

Eu tenho uma caixa Linux e consigo fazer login usando o ssh. Meu shell é /bin/bash , acabo em um prompt do shell bash.

Eu posso executar comandos internos bash como echo . Eu sou capaz de executar alguns comandos de (prefixo caminho) /bin like ls /bin

Outros comandos como whoami parecem travar. Eu CTRL-C e retornar ao prompt bash.

E outros comandos ficam completamente travados, o CTRL-C não sai do comando e eu não volto ao prompt do bash. ls /usr/bin é um exemplo de um comando que suspendeu o shell.

aqui está o caminho ... porque eu sei que alguém vai perguntar sobre isso ...

$ echo $PATH  
/u01/jdk/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/u01/app/oracle/tools/home/oracle/bin

O que causaria tal situação? O que posso fazer para resolver o problema?

    
por vince kraemer 21.12.2017 / 17:28

1 resposta

1

derobert já mencionou dmesg nos comentários. Tente executá-lo usando um caminho absoluto, como este:

/bin/dmesg | /bin/more

Veja se há algo que possa parecer um erro de disco: pode ser que um dos diretórios listados em seu PATH esteja em um disco com falha. Se o disco estiver falhando de uma maneira que faça com que ele fique preso, sempre tentando novamente a operação de leitura com falha, isso pode fazer com que o shell seja interrompido quando estiver procurando um comando para executar.

Você também pode tentar minimizar o PATH : inicialmente definido

PATH=/bin:/sbin

Se agora você pode executar comandos sem pendurar e sem usar caminhos absolutos, adicione novamente /usr/bin e /usr/sbin .

PATH=/bin:/usr/bin:/usr/sbin:/sbin

Agora você deve ter todos os comandos padrão disponíveis sem usar caminhos absolutos. Se o fenômeno de enforcamento não ocorrer novamente, você poderá começar a verificar os diretórios restantes.

Como uma verificação rápida, você pode usar o comando ls , mas executá-lo em segundo plano para que sua sessão atual não fique inutilizável se o comando parar. Por exemplo:

ls /u01/jdk/bin &

Se você vir a saída do comando ls , pressione Enter uma vez para ver o prompt novamente. (Você provavelmente também verá uma mensagem do shell indicando que um comando em segundo plano acabou de ser concluído.)

Se a saída de ls não aparecer ou estiver claramente incompleta, verifique novamente a saída do comando dmesg : você pode descobrir que o kernel agora está emitindo erros de E / S de disco para o final da saída. Essas mensagens de erro podem ser usadas para identificar o dispositivo de disco com falha, mas sabendo exatamente em qual caminho o comando ls falhou, talvez você já tenha uma boa ideia disso.

    
por 21.12.2017 / 23:56

Tags