Типизация на ~.
самом деле позволяет закрыть все «вложенные» соединения до самого глубокого.
Это достигается с помощью дружественного выхода, который вы хотите, при условии, что все ваши снаряды настроены на обработку SIGHUP как грациозной смерти. Bash делает это по умолчанию. Вы можете легко проверить дружественный выход для вашей установки, например, посмотрев, .bash_history
правильно ли обновляются файлы ваших более глубоких сессий после ~.
, или если вы настроили свои bash-es не обновлять .bash_history при выходе, тогда вы можете установить trap
на Событие EXIT (или в вашем ~/.bash_logout
) с командой, которая записывает что-то куда-нибудь, а затем видит, выполнено ли это.
Кроме того, я не уверен, что вы подразумеваете под «выходом из всех сессий в текущей оболочке». Каждый интерактивный bash - это всего лишь один сеанс, и вводимые вами команды всегда идут только в самую глубокую оболочку цепочки ProxyJump. Если вы имели в виду «фоновые задания в текущей оболочке», bash отправляет SIGHUP всем своим заданиям при получении SIGHUP демоном ssh на s ~.
, поэтому такой выход должен быть полностью дружественным, если эти выполняющиеся задания правильно реагируют на SIGHUP.
~.
просто отключает ваш SSH-клиент (это полезно, например, когда сеть исчезла). Обычно демон SSH распознает это и сигнализирует о своем сеансеSIGHUP
, так что это не совсем то же самое, что обычный выход из оболочки (но это полезно, если вы не можете получить ответ от оболочки).