Зависание и сломанная труба при перезагрузке через ssh

Я пытаюсь перезагрузить один ящик из другого, используя следующую команду:

ssh 10.0.0.26 'reboot --force'

Я ожидаю, что это заблокирует на короткое время, пока другой блок не перезагрузится, а затем вернется. То, что я вижу, происходит какое-то время, но если я нажимаю клавишу, я получаю сообщение "Ошибка записи: сломанная труба".

Перезагрузка другого блока работает так же, как и ожидалось, но я хотел бы очистить вывод на локальном блоке, в идеале, не скрывая все это в /dev/null.

Я использую OpenSSH 5.3p1 на Redhat 6.

Изменить: я нашел мое собственное решение; Я добавлю это как ответ ниже. Кажется, я пока не могу принять это. Я предполагаю, что это должно дать другим шанс прийти с лучшим решением.

3 ответа

Решение

Строка, которая работает, как показано ниже:

ssh 10.0.0.26 'reboot --force >/dev/null &'

Финал & говорит другой системе выполнить команду в фоновом режиме. Однако одного этого недостаточно, так как соединение ssh пытается оставаться открытым в случае какого-либо вывода. Следовательно, отправка stdout в null.

Вы можете запланировать перезагрузку вместо простой перезагрузки. Посмотрите на этот пост.

Если вы действительно хотите подождать, пока перезагрузка не будет в полном разгаре (например, сеансы ssh прерваны), то опросите сервер один раз в секунду и выйдите, если он не смог ответить в течение 5 попыток:

ssh -o ServerAliveInterval=1 -o ServerAliveCountMax=5 10.0.0.26 'reboot --force > /dev/null'

[Обсуждение здесь указало мне на правильные параметры.]

Другие вопросы по тегам