
Когда я запускаю команду типа iostat -dkx 2 2
через ssh, я получаю ожидаемый результат, но процессы на локальном компьютере говорят, что живы в статусе "прерываемый сон". Почему это происходит? Есть ли способ выяснить причину такого поведения?
полная команда:
$ ssh -o ConnectTimeout=4 -o ChallengeResponseAuthentication=no -o PasswordAuthentication=no <user>@host> iostat -dkx 2 2
вывод пс:
$ 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
трасса:
$ strace -p 11893
Process 11893 attached - interrupt to quit
select(8, [5], [], NULL, NULL^C <unfinished ...>
wchan:
$ cat /proc/11893/wchan
poll_schedule_timeout
трассировки стека:
$ 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
решение1
Кажется, все в порядке. Процесс, который вы смотрите (ssh), просто не имеет никаких действий в тот момент, когда вы берете его статистику процесса.
Пока нет выходных данных от удаленно запущенной команды, «select» блокируется, и процесс переходит в спящий режим.
решение2
У вас случайно нет ControlMaster
в конфигурации ( )? Если есть, то процесс не может завершиться, если это главное соединение для другого соединения. Если проблема в этом, то она не связана с запуском , соединение, которое остается открытым, — это первое, которое вы устанавливаете к этому конкретному серверу, пока ни одно соединение не активно.~/.ssh/config
ssh
iostat