Dê uma olhada no seu processo com strace
:
strace -p <pid_of_your_process>
Eu tenho um script bash que está em um estado executável com 100% de uso da CPU no espaço do usuário. Existe uma maneira que eu possa inspecionar mais de perto o que está causando o problema, sem matar o processo, como fazer um rastreamento de pilha?
Dê uma olhada no seu processo com strace
:
strace -p <pid_of_your_process>
Execute o script como sh -x yourscript
. Isso imprimirá todos os comandos que está sendo executado e você poderá ver onde fica preso.
Eventualmente, você pode adicionar strace
ao comando que desacelera as coisas para verificar suas chamadas para as funções do sistema. Isso gera cargas de saída para stderr. Você pode redirecionar para um arquivo de log como strace yourprogram 2> log
Outra possibilidade, que realmente envolve saber mais sobre os programas que são chamados, é conectar-se aos processos em execução usando gdb
. Você pode descobrir qual processo ocupa 100% com top
. Conecte-se a um programa em execução com
gdb program 1234 (where 1234 is the 'pid' of 'program')