Закрытие терминала с открытой сессией SSH

Я закрыл терминал, все еще входя в систему на удаленном сервере во время сеанса SSH (я не сделал exit перед закрытием терминала).

Может ли это повредить сервер? Какие последствия могут быть?

2 ответа

Решение

Это ничего не повредит, если вы не запускаете что-то, что вносит изменения в систему (обновления, fsck и т. Д.).

Если это был просто неактивный сеанс оболочки, то ничто не повредит.

В будущем, если вам нужно будет внести изменения в систему, которая является разрушительной, вы можете использовать GNU Screen или tmux, чтобы поддерживать работу сеанса и позже подключиться к нему.

Если вы работали в оболочке и не было никаких дочерних процессов, все еще связанных с оболочкой, проблем быть не должно.

Это не повредит серверу. Это то же самое, что закрыть окно терминала в OS X или Linux без ввода exit. Оболочка обнаруживает отключение трубы и выходит самостоятельно. На самом деле это приемлемый способ закрыть оболочку. Многие другие программы также допускают это, например "Top" и его варианты.

Однако помните, что закрытие ssh в основном завершает ваш сеанс, поэтому, если программа не может быть прервана без ущерба для сервера, это небезопасно. Например, если вы не можете безопасно остановить операцию с помощью CTRL-C, вы не можете выйти.

Кроме того, существуют программы, которые не завершаются должным образом при смерти родителя или отключении канала, оставляя застрявшие процессы. В этом случае вам просто нужно войти в систему и убить их вручную. Обычно считается плохой практикой отключаться таким образом, потому что трудно присоединиться к такой программе и снова взаимодействовать с ней. Вместо этого вам нужно найти способ либо отключить программу, либо демонизировать ее. Экран является традиционным способом сделать это, но сейчас есть много других вариантов, многие из которых могут улучшить ваш терминал, поэтому выберите тот, который вам нравится.

Другие вопросы по тегам