Как я знаю, что выполняю в Linux “экран” или нет?

можно добавить MAILTO=youremail к crontab, чтобы получить detials отказа и зафиксировать это.

Править: вероятно, Ваш крон не может запустить Ваш скрипт, потому что не разрешено сделать это

60
задан 13 April 2017 в 15:14
7 ответов

(Похищено из « Как я могу определить, нахожусь ли я на экране? » на StackOverflow, автор - пользователь jho . PS Вы не может голосовать за дубликат на сайтах StackExchange.)

Проверьте $ STY . Если он нулевой, вы на «реальном» терминале. Если он что-то содержит, это имя экрана, в котором вы находитесь.

Если вы не на экране:

eric@dev ~ $ echo $STY
eric@dev ~ $ 

Если вы находитесь на экране:

eric@dev ~ $ echo $STY
2026.pts-0.ip-10-0-1-71

Если вы используете tmux вместо screen, также проверьте $ TMUX . Чтобы добавить это в свое приглашение, добавьте следующее в свой ~ / .bashrc :

if [ -n "$STY" ]; then export PS1="(screen) $PS1"; fi
if [ -n "$TMUX" ]; then export PS1="(tmux) $PS1"; fi
88
ответ дан 28 November 2019 в 19:32

Простая проверка, которую я обычно использую, - это просто нажать Ctrl - a :

  • Если курсор переместится в начало строка , я не внутри сеанса экрана.

  • Если ничего не происходит , я знаю, что я внутри сеанса экрана и что я только что использовал клавишу управления экраном. Затем я нажимаю a (переход к началу строки), w (показывать текущие окна экрана) или выполняю другую «безобидную» экранную команду, чтобы вернуться в командную строку.

(Конечно, это работает только в том случае, если вы в данный момент выполняете bash или какое-либо другое программное обеспечение, которое «перескакивает в начало строки» или делает что-то эквивалентно безвредное при нажатии Ctrl-a.)

13
ответ дан 28 November 2019 в 19:32

Ну, в большинстве случаев (без чьих-либо попыток что-то испортить) ваш TERM будет установлен на screen (или хотя бы упомянуть screen где-нибудь).

Простое решение проблемы - просто запустить screen везде. Я говорю, не выходите из дома без него.

7
ответ дан 28 November 2019 в 19:32

Найдите $ STY , в котором содержатся сведения, которые экран использует для связи с самим собой;

14
ответ дан 28 November 2019 в 19:32

Я храню это в моем .bashrc :

 PS1='[\u@\h \W'
 if [ "$WINDOW" ]; then PS1="$PS1 ($WINDOW)"; fi
 PS1="$PS1]$"

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

7
ответ дан 28 November 2019 в 19:32

вы также можете повторно просмотреть дерево процессов из $$ , чтобы увидеть, найдете ли вы экземпляр экрана. точная цепочка, вероятно, будет зависеть от ваших настроек - в моем OS X внутренний экран zsh имеет логин в качестве своего родителя, SCREEN в качестве своего прародителя, и экран как его прадедушка.

2
ответ дан 28 November 2019 в 19:32

У меня есть способ еще круче.

Добавьте следующее в ~ / .screenrc, и вы увидите строку состояния внизу (показывающую перевернутым текстом дату, время и загрузка системы. Дополнительные коды выхода можно найти в ссылке на страницу руководства ниже.

    hardstatus alwayslastline
    hardstatus string '%Y-%m-%d %c | %l'

Источник это, когда в сеансе экрана с ctrl-a: source ~ / .screenrc .

Я должен поблагодарить Кайла Рэнкина из Для этого см. Его фантастическую статью в Linux Journal http://www.linuxjournal.com/article/10950 . Раздел справочной страницы, на который он ссылается, можно найти по адресу http: // www. gnu.org/software/screen/manual/screen.html#String-Escapes[1152598 visible.

3
ответ дан 28 November 2019 в 19:32

Теги

Похожие вопросы