Поиск по сайту:

Как проверить, находитесь ли вы в сеансе экрана или нет в Linux

В этом кратком руководстве объясняется, как проверить, находитесь ли вы в сеансе Screen или нет в Linux. Как вы могли заметить, когда вы запускаете сеанс Tmux, вы, очевидно, увидите детали сеанса, такие как текущее имя SHELL, имя хоста, текущую дату и время, в строке состояния внизу, как показано на рисунке ниже.

Детали сеанса Tmux

Но вы не увидите таких деталей, находясь внутри сеансов Screen. Вот как выглядит сеанс экрана в моей системе Ubuntu:

Экранная сессия

Вы можете заметить разницу? Сеанс экрана и обычный сеанс будут выглядеть одинаково. Давайте запустим команду «screen -ls», чтобы получить список запущенных сеансов экрана.

screen -ls

Пример вывода:

Список сеансов экрана

Видеть? Я нахожусь в сеансе Screen, но он выглядит как обычный сеанс. В строке состояния внизу нет никакой индикации. Как узнать, работаете ли вы внутри сеанса Screen или нет? Именно это мы сейчас и собираемся выяснить.

Проверьте, находитесь ли вы в сеансе экрана или нет в Linux

Есть несколько способов проверить, находимся ли мы в сеансе Screen. Здесь я дал три метода.

Способ 1 — использование команды «эхо»

Чтобы проверить, находитесь ли вы в сеансе Screen или нет, просто выполните следующую команду:

echo $STY

Если вы находитесь в сеансе Screen, вы увидите вывод, как показано ниже.

18704.pts-0.ostechnix

Вот еще один способ проверить, находитесь ли вы в сеансе Screen:

echo $TERM

В выводе вы увидите термин "экран".

Пример вывода:

screen.xterm-256color

Проверьте, находитесь ли вы в сеансе экрана в Linux

Если не было запущенных сеансов экрана, вы ничего не увидите для первой команды. А для второй команды в выводе не будет термина «экран». Просто выйдите или отсоединитесь от сеанса экрана и снова запустите приведенные выше команды. Вы увидите результат, как показано ниже.

Проверьте сеансы экрана

Видеть? Мы не находимся внутри сеанса Screen.

Две приведенные выше команды будут работать только в том случае, если вы находитесь в сеансе работающего экрана в вашей локальной системе. Это не сработает, если вы запустили сеанс Screen в локальной системе, а затем получили доступ к другой системе в сети через SSH.

В этом случае вы можете использовать второй метод, приведенный ниже.

Способ 2. Использование префиксной клавиши экрана.

Чтобы проверить, находимся ли мы в сеансе Screen или нет, просто нажмите клавиши Ctrl+a, а затем Ctrl+t. Это покажет время и имя хоста, если вы находитесь в сеансе Screen.

Взгляните на следующую демонстрацию.

Проверьте, находитесь ли вы в сеансе Screen, используя клавишу префикса Screen.

Как и в приведенном выше выводе,

  • Сначала я запустил сеанс Screen и нажал клавиши Ctrl+a и Ctrl+t, чтобы проверить, нахожусь ли я в сеансе Screen.
  • Затем я отключился от сеанса Screen, нажав Ctrl+a и d.
  • И, наконец, я снова подключился к сеансу Screen и нажал Ctrl+a и Ctrl+t, чтобы еще раз проверить, нахожусь ли я в сеансе Screen.

Этот метод будет работать, даже если у вас есть SSH-подключение к другому месту.

Способ 3 — использование команды «Подпись»

Если вам не нравится каждый раз нажимать клавиши, вы можете добавить следующий код в свой файл ~/.screenrc. Если этот файл недоступен, просто создайте его.

nano ~/.screenrc

Добавьте код:

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

Сохраните и закройте файл.

С этого момента всякий раз, когда вы запускаете сеанс Screen, вы увидите небольшую панель уведомлений (с указанием имени хоста, времени и даты, загрузки системы и т. д.) в нижней части окна терминала, как показано ниже.

Screen session on ubuntuserver (system load: 0.00 0.00 0.00)        Sat 22.02.2020 12:37

Отображение сведений о сеансе экрана в нижней части окна терминала с помощью команды «Заголовок».

Эта панель уведомлений исчезнет после выхода из сеанса экрана.

Способ 4. Установите другое приглашение Bash для сеансов экрана.

Это еще один способ сделать сеансы Screen легко узнаваемыми, добавив несколько строк кода в файл ~/.bashrc. На самом деле это не рекомендуемый метод. Это может вызвать множество ненужных проблем, если другие оболочки, такие как zsh, унаследуют вашу текущую оболочку. Это только в образовательных целях. Используйте его на свой страх и риск!

Сначала создайте резервную копию текущего файла ~/.bashrc:

cp ~/.bashrc ~/.bashrc.bak

Просто установите разные имена приглашений Bash для обычных сеансов и сеансов экрана, как вы хотите, как показано ниже. Например, я добавил следующие строки в свой файл ~/.bashrc.

if [ -z $STY ]
then
        PS1="This is normal session:~$ "
else
        PS1="This is Screen session:~$ "
fi

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

Установите другое приглашение Bash для сеансов экрана.

Опять же, менять имя приглашения Bash не рекомендуется. Вместо этого просто используйте любой из предыдущих методов, чтобы проверить, находитесь ли вы в сеансе Screen или нет.

Связанное чтение:

  • Как настроить приглашение Bash в Linux

Надеюсь это поможет.

Ресурс:

  • Форум по сбоям сервера

Статьи по данной тематике