Как запустить скрипт с использованием SSH с удаленного компьютера и избежать его прерывания, если удаленный компьютер отключен

У меня есть удаленный Linux-сервер, и я использую его для запуска очень длинных задач с использованием SSH. Он отлично работает, но, конечно, если соединение по какой-то причине умирает, задача умирает.

В частности, я запускаю что-то вроде этого:

[myName@localStation]$ ssh john_doe@myRemoteServer Password: ***** [john_doe@remoteServer]$ ./myVeryLongTask.script > myOutputLog.txt 

Есть ли способ настроить SSH-соединение таким образом, чтобы при сбое сетевого соединения задача продолжала работать?

  • Как я могу разрешить только определенным пользователям ssh?
  • Сценарий загрузки Debian autossh не работает должным образом
  • переменная pass в ssh
  • При входе в систему Linux я могу найти ip-адреса, которые можно использовать для подключения к машине через ssh?
  • Почему Bash не удалось найти команду, даже если $ PATH указан правильно?
  • Причина, по которой изменился бы ключ RS RS-ов?
  • Debian Lenny Server скомпрометирован - нет знака точки вторжения?
  • Как я могу отменить запущенный процесс и связать его с новой оболочкой экрана?
  • 3 Solutions collect form web for “Как запустить скрипт с использованием SSH с удаленного компьютера и избежать его прерывания, если удаленный компьютер отключен”

    Вам нужно прочитать команду на экране ( вот быстрый результат Google )

    Экран позволяет оставить удаленное соединение и вернуться к нему по причинам, точно так же, как вы описываете. Это также полезно для запуска автоматических заданий или поддержания сеансов неограниченного доступа.

    'man screen' для получения дополнительной информации

    EDIT: вот лучшая ссылка на экран HOWTO: экран: продолжайте работать над процессами, несмотря на отброшенное соединение

    screen действительно хорош для этого. Еще несколько вариантов: nohup :

    • at

      at, – queue, проверять или удалять задания для последующего выполнения

      Вы можете использовать at интерактивной оболочке 's' для запуска команд или сохранения их в текстовом файле и передать это:

       $ cat foo ./myVeryLongTask.script > myOutputLog.txt $ at now < foo 
    • nohup

      nohup – запустить команду, защищенную от зависаний, с выходом на не-tty

      Чтобы запустить команду, выполните

       $nohup ./myVeryLongTask.script > myOutputLog.txt 

    Для полноты, dtach – еще один вариант. Резюме detach в приведенной выше ссылке:

    dtach – это крошечная программа, которая эмулирует функцию отсоединения экрана, позволяя вам запускать программу в среде, которая защищена от управляющего терминала и затем прикрепляется к ней.

    Он меньше по размеру по сравнению с screen , и имеет гораздо больше функциональных возможностей, чем at nohup .

    Linux и Unix - лучшая ОС в мире.