
Cuando ejecuto un comando como iostat -dkx 2 2
a través de ssh, obtengo el resultado esperado, pero los procesos en la computadora local dicen estar vivos en estado "suspensión interrumpible". ¿Por qué está pasando esto? ¿Hay alguna manera de descubrir el motivo de ese comportamiento?
comando completo:
$ ssh -o ConnectTimeout=4 -o ChallengeResponseAuthentication=no -o PasswordAuthentication=no <user>@host> iostat -dkx 2 2
salida de 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
rastro:
$ strace -p 11893
Process 11893 attached - interrupt to quit
select(8, [5], [], NULL, NULL^C <unfinished ...>
qué:
$ cat /proc/11893/wchan
poll_schedule_timeout
seguimiento de pila:
$ 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
Respuesta1
Parece que no pasa nada. El proceso que está viendo (ssh) simplemente no tiene nada que hacer en el momento en que toma su estadística de proceso.
Mientras no haya salida del comando iniciado remotamente, la "selección" se bloquea y el proceso se envía a suspensión.
Respuesta2
¿Tienes ControlMaster
en tu configuración ( ~/.ssh/config
) por casualidad? Si lo hace, entonces el ssh
proceso no podrá salir si es la conexión maestra para otra conexión. Si ese es el problema, no está relacionado con la ejecución iostat
, la conexión que permanece abierta es la primera que realiza a este servidor en particular mientras no haya ninguna conexión activa.