«Экран» относится к программе, упомянутой в разделе «Как подключиться к отключенному сеансу SSH» . Это хорошая возможность.
Но есть вопрос, который я действительно хотел бы знать. Как узнать, бегу ли я внутри «экрана»? Разница в следующем:
- Если да, я знаю, что могу безопасно закрыть текущее окно терминала, например, закрыть окно PuTTY, не теряя сеанс оболочки (Bash и т. Д.).
- Если нет, я знаю, что должен позаботиться о любых незавершенных работах, прежде чем закрыть окно терминала.
Еще лучше, чтобы этот статус отображался в приглашении PS1, чтобы я мог видеть его в любое время автоматически.
linux
gnu-screen
Джимм Чен
источник
источник
Ответы:
(Похищен у « Как я могу узнать, нахожусь ли я на экране? » В StackOverflow и создан пользователем jho . PS Вы не можете голосовать за дубликат на сайтах StackExchange.)
Проверьте
$STY
. Если он нулевой, вы находитесь на «реальном» терминале. Если он содержит что-то, это имя экрана, на котором вы находитесь.Если вы не на экране:
Если вы находитесь на экране:
Если вы используете tmux вместо экрана, также проверьте
$TMUX
. Чтобы добавить это к вашему приглашению, добавьте следующее к вашему~/.bashrc
:источник
sudo
него, по умолчанию не наследует переменные окружения, в том числе$STY
. Но это , как правило , распространяется на окружающую среду SUDO, поэтому , возможно , проверить либо или$TERM
$STY
$TERM=="screen"
Ищите,
$STY
какие из них предоставляют детали, которыеscreen
используются для общения с самим собой;$WINDOW
будет текущийscreen
номер окна.источник
Простая проверка Я обычно использую это просто хит Ctrl- a:
Если курсор переходит к началу строки , я не нахожусь внутри экранной сессии.
Если ничего не происходит , я знаю, что я нахожусь в сеансе экрана и что я только что использовал клавишу управления экраном. Затем я нажимаю a(перейти к началу строки), w(показать текущие окна экрана) или выполняю какую-то другую «безвредную» экранную команду, чтобы вернуться в командную строку.
(Конечно, это работает только в том случае, если вы в настоящее время выполняете bash или другое программное обеспечение, которое «переходит на начало строки» или делает что-то эквивалентное безвредным при нажатии Ctrl-a.)
источник
Что ж, большую часть времени (если не чьи-то попытки что-то испортить) вы
TERM
будете настроеныscreen
(или, по крайней мере,screen
где-нибудь упомянуть ).Простое решение проблемы - просто запустить экран везде. Не выходи из дома без этого, говорю я.
источник
$TERM
также обычно распространяется черезsudo
, что является плюсом!Я держу это в моем
.bashrc
:Это не надежно, но всякий раз, когда я создаю новый экран, он помещает номер окна в подсказку. Если я не бегу
screen
, номера нет.источник
У меня есть еще более прохладный способ.
Добавьте следующее в ваш ~ / .screenrc, и вы увидите строку состояния внизу (показывающую в перевернутом тексте дату, время и загрузку системы. Дополнительные коды перехода находятся в ссылке на страницу руководства ниже.
Источник это, когда в сеансе экрана с
ctrl-a:source ~/.screenrc
.Я должен поблагодарить Кайла Ранкина из Linux Journal за это. Смотрите его фантастическую статью на http://www.linuxjournal.com/article/10950 . Раздел справочной страницы, на который он ссылается, можно найти по адресу http://www.gnu.org/software/screen/manual/screen.html#String-Escapes .
источник
Вы также можете восстановить дерево процессов,
$$
чтобы увидеть, не нашли ли вы экземпляр экрана. точная цепочка, вероятно, будет зависеть от вашей настройки - на моем компьютере с OS Xzsh
внутренний экран имеетlogin
своего родителя,SCREEN
деда иscreen
прадеда.источник