PuTTY (или любой другой клиент SSH) не заботится о том, смотрите ли вы на экран или обедаете. Он не закроет сессию самостоятельно.
Сессия будет закрыта, только если:
- Вы закрываете его вручную (например, введите
logout
, Ctrl+D , exit
и т.д. И т.д.)
- В вашей оболочке установлен автоматический выход из системы или режим ожидания.
- Сетевое соединение умирает.
Последнее не должно происходить случайным образом, хотя плохое оборудование может «услужливо» разорвать соединения, когда они думают, что они простаивают. Это обычно происходит с оборудованием SOHO, которое имеет очень мало памяти и агрессивно закрытое соединение, когда полагает, что оно больше не используется.
Пока что для замазки и сеансов. Что касается nohup
, давайте погрузимся немного глубже.
В первые дни люди использовали телефонные линии и модемы для дозвона. Иногда эта связь действительно умирала. В этом случае оболочка получает сигнал о том, что линия обнаружила зависание. (сигнал 1, HUP).
Когда это происходит, оболочка будет сигнализировать запущенным программам с помощью SIGHUP, что в основном означало, что телефонная линия оборвана. Пожалуйста, аккуратно выключите. (закрыть файлы, сохранить при необходимости и т. д.).
Когда вы выходите из системы или когда PuTTY (ssh) умирает, происходит то же самое.
Если вы запустите программу с nohup
то произойдут две вещи:
- SIGHUP игнорируется. Так что программа не закрывается.
- Стандартный вывод записывается в файл (по умолчанию:
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
(продолжить ранее добавленный экран)
︙
Продолжайте, где вы остановились на работе.