
Quando executo comandos como iostat -dkx 2 2
via ssh, obtenho o resultado esperado, mas os processos no computador local estão ativos no status "sono interrompível". Por que isso está acontecendo? Existe uma maneira de descobrir o motivo desse comportamento?
comando completo:
$ ssh -o ConnectTimeout=4 -o ChallengeResponseAuthentication=no -o PasswordAuthentication=no <user>@host> iostat -dkx 2 2
saída ps:
$ ps aux | grep 11893 && ps aux | grep PID
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
1000 10273 0.0 0.0 103280 904 pts/0 S+ 12:09 0:00 grep PID
1000 11893 0.0 0.0 158732 3892 ? S Feb17 0:00 ssh -o ConnectTimeout=4 -o ChallengeResponseAuthentication=no -o PasswordAuthentication=no <user>@<host> iostat -dkx 2 2
1000 10285 0.0 0.0 103280 904 pts/0 S+ 12:09 0:00 grep 11893
traço:
$ strace -p 11893
Process 11893 attached - interrupt to quit
select(8, [5], [], NULL, NULL^C <unfinished ...>
o que é:
$ cat /proc/11893/wchan
poll_schedule_timeout
rastreamento de pilha:
$ cat /proc/11893/stack
[] poll_schedule_timeout+0x39/0x60
[] do_select+0x6bb/0x7c0
[] core_sys_select+0x18a/0x2c0
[] sys_select+0x47/0x110
[] system_call_fastpath+0x16/0x1b
[] 0xffffffffffffffff
Responder1
Parece não haver nada de errado. O processo que você está vendo (ssh) simplesmente não tem nada a ver no momento em que você está obtendo as estatísticas do processo.
Enquanto não houver saída do comando iniciado remotamente, o "select" será bloqueado e o processo será colocado em suspensão.
Responder2
Você tem ControlMaster
na sua configuração ( ~/.ssh/config
) por acaso? Se você fizer isso, o ssh
processo não poderá ser encerrado se for a conexão mestre de outra conexão. Se esse for o problema, não está relacionado à execução iostat
, a conexão que permanece aberta é a primeira que você faz com esse servidor específico enquanto nenhuma conexão já estiver ativa.