Вопрос: Как проверить, включен ли я в сеанс сеанса?


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


56
2018-04-10 16:30


Источник




Ответы:


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

Я на экране

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

Я не на экране

$ echo $STY

$

81
2018-04-10 16:34



Это предполагает, что вы все еще находитесь в рабочем сеансе на локальном компьютере. Если вы запустите экран, а затем SSH в другом месте, это не сработает. - David Mackintosh
Хорошо работает, спасибо! - crodjer
if test -n "$STY"; then printf "This is a screen session named '$STY'.\n"; else printf "This is NOT a screen session.\n"; fi - aggregate1166877
@DavidMackintosh, если вы SSH'd в другом месте, нажатие ctrl-D «отключит меня от сервера», и это именно то, о чем спрашивает вопрос. - womble♦
@ aggregate1166877 У меня есть это, если вы разместили как псевдоним в каждой отдельной машине, которую я использую сейчас. - Eduardo Bezerra


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

echo $TERM

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

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


35
2018-01-31 14:38



Это предполагает, что вы по какой-то причине не намеренно возились со своим значением TERM. - David Mackintosh
Если вы изменяете свою переменную TERM во внутреннем экране, вы вызываете на себя всевозможные проблемы. - womble♦
Ну, мои узлы Solaris 2.6 не играют хорошо, а значения TERM установлены на значения экрана. - David Mackintosh
"$TERM" = "screen" кажется, сохраняется при вводе sudo окружающей среды, в отличие от $STY вариант. - Melebius


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


22
2018-01-05 12:03



Почему мы не продвигаем это. - AndreKR
Это, безусловно, лучшее решение здесь. - Felix Jen
Как это лучшее решение? Что делать, если вы не на экране и ^A^T это ключевая последовательность для «nuke your homedir» в программе, которую вы сейчас используете? - womble♦
@womble Если вы находитесь в неизвестной программе, которая может делать случайные деструктивные вещи в ответ на последовательности клавиш и команды, тогда ничего не безопасно. - Gurgeh


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

С первой частью (имя системы + загрузка) в зеленом и дата в розовом. Полезно и трудно пропустить!


9
2017-08-24 10:21



Это потрясающе! Он не мешает (нижняя позиция), он всегда виден (и окрашен) и предоставляет полезную информацию о системе. Я разместил это здесь также stackoverflow.com/a/43571028/2450431 - hrvoj3e


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


4
2017-08-11 06:43





screen -ls

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

screen -r sessioninfo

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

screen -D -r sessioninfo

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


0
2018-04-29 09:04



Это не отвечает на вопрос. - womble♦


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

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

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

Пример отсоединен:

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

-1



если в другом месте есть экраны, это может быть проблемой. - Dennis Nolte