После прочтения расплывчатого официального документа экрана 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.