Вийдіть із оболонки із ярликом (не набираючи вихід), який належним чином закриває сеанс


12

Я використовую команду ProxyJump для декількох сеансів ssh, якими я користуюся щодня, а також дуже часто перемикаю користувачів на ці сеанси, і вводити exit3 або 4 рази поспіль не надто цікаво.

Мені відомо про newline+ ~+, .щоб припинити сеанс ssh, мені все ж доведеться перевірити, чи він завершує його дружно, як exitби, але як ви виходите з усіх сеансів у поточній оболонці однією командою або ярликом, щоб ввести exit3 або 4 рази у моєму випадку це стає разовою справою?


2
~.просто відключає ваш клієнт SSH (корисно, наприклад, коли мережа зникла, наприклад). Зазвичай демон SSH розпізнає це і сигналізує про його сеанс SIGHUP, тому це не зовсім те саме, що звичайно вийти з оболонки (але це корисно, якщо ви не можете отримати жодної відповіді від оболонки).
Toby Speight

Відповіді:


29

Ctrl- Dвийде з оболонки у багатьох випадках. Це швидше, ніж набирати текст exit Enter. Це все ще не одна команда, щоб все припинити, але утримувати Ctrlі натискати Dкілька разів легше і швидше. Не знаєте, наскільки це цінно для вашого випадку використання.

Тут детально обговорюється .


2
Наступна зупинка - unix.stackexchange.com/a/182071/5132 , а зупинка після цього - подальше читання там. (-:
JdeBP

2
Будьте обережні з CTRL + D. Якщо у вас є запит будь-яких символів у запиті, натискання CTRL + D виконає його так само, як і Enter. Іншими словами, не набирайте rmкоманду, а потім натисніть CTRL + D, якщо ви не хотіли її виконувати. Я не бачу такої поведінки в ksh.
Пешке

2
@Peschke У будь-якій системі, яку я коли-небудь використовував, Ctrl + D нічого не робить, якщо я щось набрав. Я ніколи не бачив поведінки, яку ви описуєте.
Джон Кугельман

1
@JohnKugelman Я тестував і підтвердив свою поведінку під час мого коментаря з bash на RHEL 7.5.
Пешке

3
Peschke використовує viвхідні прив'язки терміналу.
JdeBP

5

Введення ~.фактично робить трюк закриття всіх "вкладених" з'єднань до найглибших.

Це робиться при дружньому виході, який ви хочете, доки всі ваші снаряди налаштовані на обробку SIGHUP як витонченої смерті. Bash робить це за замовчуванням. Ви можете легко перевірити дружній вихід для налаштування, наприклад, побачивши, чи .bash_historyфайли ваших більш глибоких сеансів оновлюються належним чином після ~., або якщо ви встановите, що ваші bash-es не оновлюються .bash_history після виходу, ви можете встановити trapна EXIT подія (або у вашому ~/.bash_logout) з командою, яка щось десь записує, і пізніше подивіться, чи вона виконується.

Крім того, я не впевнений, що ви маєте на увазі під "закриттям усіх сеансів у поточній оболонці". Кожен інтерактивний баш - це лише один сеанс, а команди, які ви вводите, завжди йдуть лише до найглибшої оболонки ланцюга ProxyJump. Якщо ви мали на увазі "фонові завдання в поточній оболонці", bash посилає SIGHUP на всі свої завдання при отриманні SIGHUP від ​​демона ssh після ~., тому такий вихід повинен бути повністю доброзичливим, якщо ті, що виконують завдання, реагують належним чином на SIGHUP.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.