Nohup и разница между выходом из системы и выходом из удаленной оболочки

Nohup и разница между выходом из системы и выходом из удаленной оболочки

У меня есть доступ к удаленной оболочке Linux для рабочих целей. Я держал скрипт python запущенным в фоновом режиме с помощью nohup.

Теперь, если я хочу выйти из сеанса, в чем разница между использованием logoutи exitкомандами? Будет ли мой скрипт продолжать работать в обоих этих случаях?

решение1

logoutэто внутренняя команда оболочки. Так что обычно ответ зависит от оболочки. Из man bash:

logout– Выйти из оболочки входа.

От man zsh:

logout [ n ]– То же, что и выход, за исключением того, что работает только в оболочке входа.

Так что они полностью одинаковы, но выход из системы просто откажется работать для оболочек без входа. Что такое оболочка входа, можно прочитать в страницах руководства.

решение2

Попробуйте оба в локальном терминале. Если вы хотите использовать "logout", вам нужно "login". В вашем терминале по умолчанию вы никогда не запускаете оболочку с login, поэтому если вы хотите закрыть терминал, вам нужно использовать "exit". Это не "login shell".

В удаленном ssh shell не имеет значения, потому что вы используете "login shell". Когда вы используете nohub или что-то подобное, вы "отсоединяете" команду от фактической оболочки, поэтому, когда вы закрываете свою оболочку, процесс не умирает.

Связанный контент