Відповіді:
Ви можете подивитися $STY
змінну (змінну, встановлену командою screen ). Якщо це не "", то ви перебуваєте на екрані.
Я в екрані
$ echo $STY
29624.pts-1.iain-10-04
$
Я не в екрані
$ echo $STY
$
if test -n "$STY"; then printf "This is a screen session named '$STY'.\n"; else printf "This is NOT a screen session.\n"; fi
Ви можете подивитися змінну $ 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
"$TERM" = "screen"
схоже, що зберігається при входженні в sudo
навколишнє середовище, на відміну від $STY
варіанту.
Якщо ви не змінили прив'язки клавіш за замовчуванням, ви можете зробити Ctrl+ a-> Ctrl+ t, що покаже час, якщо ви знаходитесь на екрані. Це спрацює, навіть якщо у вас є 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
, щоб сеанс мого екрану виглядав зовсім інакше, ніж звичайний термінал.
.screenrc
файл прикладу .
Зробіть a screen -ls
. Це буде явно вказати , в Attached
залежності від Detached
стану.
Приклад додається:
$ screen -ls | grep tached
3132.pts-0.esavo00 (Attached)
Приклад відокремлений:
$ screen -ls |grep tached
3132.pts-0.esavo00 (Detached)