Gnu-Screen: запустить скрипт, который отправляет команды сеансу экрана, в котором он выполняется - PullRequest
7 голосов
/ 22 мая 2009

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

Спасибо.

Ответы [ 5 ]

9 голосов
/ 23 мая 2009

С экрана man-страницы:

  -X   Send the specified command to a running screen  session.  You  can
       use  the  -d or -r option to tell screen to look only for attached
       or detached screen sessions. Note that this command  doesn't  work
       if the session is password protected.

В основном, запустить

screen -X title mynewtitle
screen -X monitor on

Если терминал не работает на экране, он молча выдает ошибки:

notinscreen:~$ screen -X title mynewtitle
notinscreen:~$

Вы также можете отправить команду в определенный сеанс, даже если он отключен. Учитывая сеанс экрана с именем "main":

$ screen -S main
[detach from screen session]
$ screen -ls
There is a screen on:
        2073.main       (Detached)
1 Socket in /tmp/uscreens/S-dbr.

.. Вы можете отправить заголовок последнего активного окна на blah:

$ screen -x main -X title blah

.. или конкретное окно (в данном примере с именем oldwindow):

$ screen -x main -p oldwindow -X title blah

Вместо использования -x main вы можете использовать идентификатор процесса (от screen -ls), а также вместо имени окна (-p oldwindow) вы можете использовать номер окна:

$ screen -x 2073 -p 0 -X title h

Если есть только один сеанс, вам не нужно указывать PID или имя сеанса.

7 голосов
/ 23 мая 2009

Я думаю, что это работает:

if [-n "$STY"]; then
    screen -X title "foo"
    screen -X monitor on
fi
2 голосов
/ 22 мая 2009

Экран объявляет $STY переменную окружения, вы можете попробовать использовать ее.

1 голос
/ 22 мая 2009

Вы хотите отображать информацию или взаимодействовать с самим сеансом экрана? Вы можете отправлять сообщения обратно с этим: (http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html#lbAI)

ЛИНИЯ СООБЩЕНИЯ Экранные дисплеи информационные сообщения и др. диагностика в строке сообщения. В то время как эта строка распространяется на внизу экрана, это может быть определено, чтобы появиться в верхней части экран во время компиляции. Если твой терминал имеет статусную строку, определенную в его termcap, экран будет использовать это для отображение его сообщений, в противном случае строка текущего экрана будет временно перезаписывается и выводится будет на мгновение прерван. строка сообщения автоматически удаляется после нескольких секунд задержки, но это может также быть удаленным рано (на терминалах без строки состояния), начиная с типа.

Может использоваться средство строки сообщения приложением, запущенным в текущее окно с помощью ANSI Последовательность контроля сообщений о конфиденциальности. За Например, изнутри оболочки, попробуйте что-то вроде:

echo '<esc>^Hello world from window '$WINDOW'<esc>\\' 

где '' - это побег, '^' - это буквальная стрелка вверх, и «\» превращается в одна обратная косая черта.

0 голосов
/ 22 мая 2009

Экран работает прозрачно, поэтому определить сессию экрана сложно. Если вы попытаетесь отправить нажатия клавиш, это сработает и заполнит ваш терминал крошечным мусором, если вы не в сеансе.

...