Как я могу иметь несколько сеансов терминала через одно соединение SSH?


21

У меня работает Ubuntu Server Edition, и я могу использовать SSH для выполнения различных задач. Что я хотел бы, так это возможность SSH на моем сервере запустить серверное приложение, а затем переключиться на другой «виртуальный» сеанс (с тем же экземпляром SSH) и выполнить клиентские вызовы для службы. Когда я запускаю сервис, это блокирующий вызов, поэтому я не могу запустить клиентские вызовы против него, не запустив другой сеанс SSH.

Я надеялся, что может быть более изящный способ, что-то вроде пользовательского интерфейса с виртуальными рабочими столами.

Ответы:


24

То, что вы хотите использовать, это экран или, что еще лучше, удобная оболочка вокруг экрана, которая называется byobu.

Экран позволяет запускать несколько сеансов виртуального терминала в одном сеансе SSH. А учебник и справочные страницы доступны.

byobu - это обертка, которая позволяет легко открывать новые экраны с помощью простой функциональной клавиши вместо комбинации клавиш ctrl-a. Он также показывает строку состояния со всеми открытыми виртуальными терминалами, которые могут быть названы.

Еще одна приятная особенность заключается в том, что весь ваш экран может работать, пока ваше ssh-соединение отключено. Вы просто подключаетесь снова через ssh и вызываете byobu, и все как раньше.

Напоследок несколько скриншотов по бёбу.


5

GNU Screen - это ответ, который вы искали, но он очень похож на Vi. У вас есть много знаний о командах для настройки успешной среды экрана. Вот кое-что для начала. Прежде всего, вам нужно, чтобы .screenrc http://paste.ubuntu.com/473764/ сохранил его на удаленном сервере в домашней папке пользователя. Следующий экран установки на удаленном компьютере ( sudo apt-get install screen) Далее вам нужно запустить его, вот несколько команд для «запуска экрана»:

screen- Это довольно просто. Запускается новый сеанс экрана screen -ls- список всех активных сеансов экрана. Да, вы можете иметь несколько терминалов на нескольких экранах. ТАК МИЛО.

Образец

screen -ls
There is a screen on:
    16467.pts-0.ubuntu  (08/05/2010 07:47:53 PM)    (Detached)
1 Socket in /var/run/screen/S-marco.

screen -x <pid> - Это возобновит сеанс отдельного экрана, IE: screen -x 16467

Как только вы окажетесь на экране (и вы использовали мой пример .screenrcфайла), вы увидите следующее внизу:

(LOAD) 0$* bash

Которые загружают серверы и список всех открытых «вкладок терминала». В настоящее время только одно окно. Введите что-то, затем нажмите эту комбинацию клавиш: Ctrl + Aотпустите, затем нажмите c. Ctrl + Aэто escape-последовательность. Все команды запускаются с этой комбинацией. cэто создать новую вкладку. Вы заметите нижний колонтитул, (LOAD) 0-$ bash 1$* bashкоторый показывает, что есть еще одна открытая вкладка и активная вкладка номер 1. Вы можете открыть максимум 60 вкладок за сеанс экрана.

Если вы хотите выйти из экрана, но продолжите его использовать, Ctrl + Aто dэто отключит ваш сеанс. Наконец, вы можете закрыть вкладки, используя Ctrl + Aзатем, kчто убьет эту вкладку (если она заблокирована), но обычно вы можете просто напечатать, exitкак если бы вы были в терминале, и она закроет эту вкладку.

И, наконец , чтобы перечислить все окна открыть, можно ввести Ctrl + Aпотом ".

Для Screen есть множество вариантов, которые вы должны пролить на файл man для получения дополнительной информации. Есть некоторые недостатки. Вы не можете использовать свою полосу прокрутки на экране, вы должны использовать элементы управления буфером для отката, однако приведенного выше достаточно, чтобы вы начали, чтобы убедиться, что это приемлемый вариант. Отличная вещь об этом и о чем я много говорил как системный администратор - сетевое подключение. Если ваша сеть перестает работать, ваши операции не будут потеряны! Так как на сервере запущен экран. Вам просто нужно снова войти через SSH screen -lsи screen -xвернуться в свою сессию.


Похоже, txwikinger побил меня некоторыми полезными ссылками!
Марко Чеппи

Ctrl + AЗатем нажмите, ?чтобы перейти на страницу справки. Все команды и ярлыки перечислены там. Введите Ctrl + Aзатем, :чтобы использовать любую из команд по имени, если запомнили имя, но забыли горячую клавишу.
Дан

1

Если вы используете Ubuntu Server Edition, byobuэто определенно ваш лучший вариант. Руководство по Ubuntu Server содержит полезную документацию .

Как правило, его легче изучить и использовать, чем screenон установлен по умолчанию.


0

Я использую Emacs, поэтому настройка экрана по умолчанию усложняет мою жизнь.

$ cat /home/cjac/.screenrc 

бежать ^ \

Попробуй это!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.