Назад | Перейти на главную страницу

Отключить текущий сеанс и присоединиться к другому сеансу с помощью одного скрипта, можно?

После прочтения расплывчатого официального документа экрана GNU ( http://www.gnu.org/software/screen/manual/screen.html ) и задать несколько вопросов на этом сайте. Я до сих пор не могу понять, как выполнить такую ​​задачу с помощью сценария оболочки. Чтобы описать эту задачу, нужно несколько слов.

Предположим, я использую PuTTY для подключения к моему серверу Linux через Telnet.

【ШАГ 1】 Запустите 2 соединения Telnet.

Из окна Putty 1 (PTWIN1) , telnet в оболочку Linux Bash выполните screen -RR для запуска сеанса экрана и получения имени сеанса 21385.pts-4.linux-ic37 .

В окне шпатлевки 2 (PTWIN2) сделайте то же самое, что и в PTWIN1, но на этот раз я получаю имя сеанса 22041.pts-9.linux-ic37 .

Теперь у нас одновременно работают два сеанса работы с экраном. Мы можем это проверить:

$ screen -ls
There are screens on:
    22041.pts-9.linux-ic37  (Attached)
    21385.pts-4.linux-ic37  (Attached)
2 Sockets in /var/run/uscreens/S-chj2.

【ШАГ 2】

Предположим, что по какой-то причине TCP-соединение PTWIN1 потеряно ненормально (но сервер об этом не знает), и в сеансе 21385 ожидается срочная работа, и я хочу быстро восстановить контроль над ней. К счастью, мы знаем, что сеанс 21385 все еще существует, поэтому я хочу, чтобы PTWIN2 был присоединен к сеансу 21385. Поскольку я ненавижу все время вспоминать опцию эзотерического экрана, я решил написать сценарий под названием sttach.

я надеюсь

sttach 21385.pts-4.linux-ic37

может позволить мне подключиться к сеансу 21385 (для PTWIN2).

Теперь предположим, что sttach работает хорошо, и я беру на себя управление 21385 на PTWIN2.

【ШАГ 3】

Через несколько минут. Я хочу вернуться к работе над сеансом 22041. Здесь, пожалуйста, позвольте мне, чтобы PTWIN2 оставался связанным с сеансом 21385. Я бы хотел запустить другое окно замазки (PTWIN3), подключиться к серверу через telnet и выполнить

sttach 22041.pts-9.linux-ic37

в надежде, что я смогу возобновить сеанс 22041 на PTWIN3.

Вы можете видеть преимущество sttach: пока я знаю имя целевого сеанса, я могу вызвать его, чтобы мое окно PuTTY переключилось на этот сеанс, независимо от того, является ли целевой сеанс «(прикреплен)» или «(отсоединен)», и независимо от того, находится ли текущий контекст внутри сеанса экрана или нет.

Теперь вопрос: как написать (Bash) скрипт sttach? Я имею в виду, запустить экран с соответствующими параметрами в sttach для достижения цели.

Жду вашего доброго ответа. Спасибо.


Мои предыдущие вопросы относительно экрана GNU:

Мой env: openSUSE Linux 11.3, экран GNU 4.00.03 (FAU) 23 октября 2006 г.

После нескольких дней борьбы с экраном я сдаюсь. Я нашел гораздо лучшую альтернативу, tmux.

tmux более мощный и имеет более понятный дизайн.

Например, чтобы переименовать текущий сеанс, просто выполните

tmux rename armcross

Чтобы переименовать сеанс инопланетян, просто выполните

tmux rename -t oldname newname

- независимо от того, прикреплен он или нет.

Чтобы переключиться на другой сеанс, просто выполните:

tmux switch-client -t <targetsessionname>

- для этого вам не обязательно знать имя текущего сеанса, независимо от того, находится ли целевая сессия в присоединенном или отсоединенном состоянии.

Я просто демонстрирую использование tmux в командной строке; для интерактивного использования tmux также намного лучше, чем

Эта книга - хороший учебник по tmux tmux: продуктивная разработка без мыши

==== Несколько слов:

ПОЖАЛУЙСТА, НЕ удаляйте мой пост только потому, что я обращаюсь к tmux. Это определенно ОТВЕТ. Это похоже на вопрос о Linux 2.2 десятилетней давности, но кто-то предполагает, что его можно легко решить с помощью Linux 2.6; НЕ как кто-то говорит, что Windows может делать что-то лучше, чем Linux.