Я запускаю интерактивную программу curses в сеансе экрана на довольно слабом оборудовании. В большинстве случаев экран отсоединен. Есть ли способ для этой программы обнаружить эту ситуацию и в основном остановить рисование на экране?
Я запускаю интерактивную программу curses в сеансе экрана на довольно слабом оборудовании. В большинстве случаев экран отсоединен. Есть ли способ для этой программы обнаружить эту ситуацию и в основном остановить рисование на экране?
Ответы:
Там есть скрипт irssi, screen_away
который устанавливает ваш статус в зависимости от того, прикреплен экран или нет. Это работает так:
Каждая оболочка, запущенная на экране, будет иметь STY
переменную окружения с именем сокета. Вы можете запустить, screen -ls
чтобы получить путь, где хранятся все сокеты:
$ screen -ls
There are screens on:
11824.pts-24.mmrozek (Attached)
2306.ssh (Detached)
6615.chat (Attached)
3 Sockets in /var/run/screen/S-mmrozek.
Проверьте бит выполнения на /var/run/screen/.../$STY
. Если он установлен, экран прикреплен; в противном случае он отделен. Вы можете видеть из вывода выше, что два из моих трех экранов прикреплены, и здесь установлены соответствующие биты выполнения:
$ ls -l /var/run/screen/S-mmrozek/
total 0
prwx------ 1 mmrozek mmrozek 0 Oct 5 13:04 11824.pts-24.mmrozek
prw------- 1 mmrozek mmrozek 0 Sep 23 23:45 2306.ssh
prwx------ 1 mmrozek mmrozek 0 Oct 5 12:43 6615.chat
Вы также можете просто держать проверки вывода screen -ls
для строки , которая содержит $STY
, и посмотреть , если он заканчивается (Attached)
или (Detached)
, но это требует запуска screen
снова и снова