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

Как проверить, нахожусь ли я в сеансе экрана?

Мне это нужно, чтобы определить, попал ли ctrl+d отключит меня от сервера или просто закроет текущий screen.

Можно ли как-нибудь проверить, сейчас ли я в screen сессия?

Вы можете посмотреть на $STY переменная (переменная, установленная экранная команда). Если это не "", значит, вы находитесь в сеансе экрана.

Я на экране

$ echo $STY 
29624.pts-1.iain-10-04
$

Я не на экране

$ echo $STY

$

Вы можете посмотреть на переменную $ TERM.

echo $TERM

Если это screen сеанс, термин-переменная должна возвращать "экран".

root@deore:/volumes# echo $TERM
screen

Ctrl-a -d (для выхода из экрана)

root@deore:/volumes# echo $TERM
xterm

Также проверьте: https://stackoverflow.com/questions/3472287/how-do-you-tell-if-the-current-terminal-session-is-in-gnu-screen

Если вы не изменили привязки клавиш по умолчанию, вы можете сделать Ctrl+а -> Ctrl+т, который покажет время, если вы находитесь на экране. Это будет работать, даже если у вас есть ssh: d где-то еще, в отличие от других предложений.

В caption команда в ~/.screenrc - хороший способ выделить сеанс экрана.

Я лично использую это:

$ cat ~/.screenrc
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"

Он добавляет строку, подобную этой, внизу экрана:

Screen session on gbook (system load: 1,75 1,74 1,68)                   Lun 05.01.2015 13:01

Первая часть (имя системы + загрузка) выделена зеленым цветом, а дата - розовым. Полезно и сложно пропустить!

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

Если вы просматриваете приглашение командной строки, вы можете просто ввести что-нибудь, что угодно и нажать Ctrl + A. Если ваш курсор переместится в начало подсказки, вы не внутри экрана. Если вам дополнительно нужно нажать A, то вы это сделаете.

Сделать screen -ls. Он будет явно указывать Attached против Detached положение дел.

Пример прилагается:

$ screen -ls | grep tached
3132.pts-0.esavo00      (Attached)

Пример отдельно:

$ screen -ls |grep tached
3132.pts-0.esavo00  (Detached)
screen -ls

для просмотра ваших сессий и

screen -r sessioninfo

для повторного подключения к отключенному, если он отключен.

screen -D -r sessioninfo

для переподключения к отключенному.