2

Мои сценарии работают очень долго, около 30 минут, но если я уйду и пойду на обед, я сомневаюсь, что:

1: будет ли закрыта сессия замазки, если скрипт запущен?

2: если сессия замазки закрывается, скрипт завершается.

Если я использую nohup scriptname , все будет хорошо?

1 ответ1

2

PuTTY (или любой другой клиент SSH) не заботится о том, смотрите ли вы на экран или обедаете. Он не закроет сессию самостоятельно.

Сессия будет закрыта, только если:

  1. Вы закрываете его вручную (например, введите logout , Ctrl+D , exit и т.д. И т.д.)
  2. В вашей оболочке установлен автоматический выход из системы или режим ожидания.
  3. Сетевое соединение умирает.

Последнее не должно происходить случайным образом, хотя плохое оборудование может «услужливо» разорвать соединения, когда они думают, что они простаивают. Это обычно происходит с оборудованием SOHO, которое имеет очень мало памяти и агрессивно закрытое соединение, когда полагает, что оно больше не используется.


Пока что для замазки и сеансов. Что касается nohup , давайте погрузимся немного глубже.

В первые дни люди использовали телефонные линии и модемы для дозвона. Иногда эта связь действительно умирала. В этом случае оболочка получает сигнал о том, что линия обнаружила зависание. (сигнал 1, HUP).

Когда это происходит, оболочка будет сигнализировать запущенным программам с помощью SIGHUP, что в основном означало, что телефонная линия оборвана. Пожалуйста, аккуратно выключите. (закрыть файлы, сохранить при необходимости и т. д.).

Когда вы выходите из системы или когда PuTTY (ssh) умирает, происходит то же самое.

Если вы запустите программу с nohup то произойдут две вещи:

  1. SIGHUP игнорируется. Так что программа не закрывается.
  2. Стандартный вывод записывается в файл (по умолчанию: nohup.out), а не в TTY.

Если я использую nohup scriptname , все будет хорошо?

Если вы используете nohup scriptname и скрипт не требует ввода, то да, это будет хорошо. Если вы хотите увидеть вывод скрипта во время его работы, вы можете подключить лог-файл.

nohup scriptname &
tail -f nohup.out

Помимо nohup есть как минимум два других интересных варианта:

И то, и другое позволяет вам не только пережить отключенную линию, но и подключить терминал позднее.

Пример:

Сидя за компьютером-1, залогинился на сервер-1

screen                          запускает экран
make bzimage                    Независимо от задачи / сценария, который вы хотите
Ctrl+A, Ctrl+D             Отделить; кажется, что screen закончился
logout                          Выход

На данный момент screen все еще работает и предоставляет оболочку для вашего скрипта.

Допустим, вы идете домой, садитесь за свой рабочий стол и запускаете ssh на сервер-1,

ssh server-1.work.tld
  имя пользователя
  пароль
screen -r                       (продолжить ранее добавленный экран)
   ︙                            Продолжайте, где вы остановились на работе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .