Команда reboot -f
никогда возвраты (если у Вас не было разрешения вызвать перезагрузку). В точке, где это выпущено, клиент SSH ожидает чего-то, чтобы сделать, который мог быть:
Так как серверный процесс SSH мертв, клиент SSH не умрет, пока таймер не разожжет.
Если Вы работаете ssh remotehost 'reboot -f >/dev/null &'
, затем то, что происходит:
reboot
команда в фоновом режиме.reboot
управляйте вызывает машину к перезагрузке.Однако это не надежно: в зависимости от синхронизации шаг 3 мог бы произойти перед шагом 2. Добавление таймера делает это вряд ли:
ssh remotehost '{ sleep 1; reboot -f; } >/dev/null &'
Быть абсолютно уверенным, что сторона сервера стремится работать reboot
, при проверке, что это на самом деле не перезагружает прежде, чем уведомить клиент, что это фиксируется, Вам нужно дополнительное уведомление для движения от сервера до клиента. Это может быть произведено посредством соединения SSH, но оно сложно.
Легко испытать это. bash
не будет жаловаться, добавляете ли Вы несуществующий каталог в ПУТИ (но очевидно он не найдет команды или сценарии там ни одним).
Если Вы позже создаете каталог и храните исполняемые файлы там, bash
найдет их.
Думайте об этом иначе, единственная причина проверить, что любой после пути в ПУТИ - то, потому что была ошибка при нахождении файла в предыдущем. Таким образом, ошибки не вызовут проблемы, на самом деле они ожидаются.