Как проверить, находитесь ли вы в сеансе экрана или нет в 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
Надеюсь это поможет.
Ресурс:
- Форум по сбоям сервера