
У меня есть доступ к удаленной оболочке 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 или что-то подобное, вы "отсоединяете" команду от фактической оболочки, поэтому, когда вы закрываете свою оболочку, процесс не умирает.