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

18

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

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

    
задан JPrescottSanders 06.08.2010 в 01:37
источник

4 ответа

23

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

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

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

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

Наконец-то скриншоты byobu.

    
ответ дан txwikinger 06.08.2010 в 01:43
источник
5

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

screen - Это довольно просто. Он запускает новый сеанс экрана screen -ls - Список всех активных сеансов экрана. Да, вы можете иметь несколько терминалов внутри нескольких экранов. SO SWEET.

Пример

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 release, затем нажмите c . Ctrl + A - это escape-последовательность. Все команды начинаются с этой комбинации. c создает новую вкладку. Вы заметите, что нижний колонтитул имеет (LOAD) 0-$ bash 1$* bash , который показывает, что открыта еще одна вкладка, а активная вкладка - номер 1. Вы можете открыть максимум 60 вкладок на сеанс сеанса.

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

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

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

    
ответ дан Marco Ceppi 06.08.2010 в 01:55
1

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

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

    
ответ дан jbowtie 06.08.2010 в 02:15
0

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

$ cat /home/cjac/.screenrc 

escape ^ \

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

    
ответ дан cjac 06.08.2010 в 02:00