Изменить поведение гашения экрана консоли Linux

Как изменить поведение гашения экрана на виртуальных терминалах Linux?

Например, если я переключусь на VT с X, войду в систему и оставлю систему в покое на 5 минут или около того, экран станет пустым, как заставка. Он возвращается с любым нажатием клавиши, как заставка.

В основном я просто хочу изменить время ожидания, но меня также интересуют другие настройки.

Если это поможет, одна из моих систем работает под управлением Ubuntu 10.04 со стандартными графическими драйверами. fbset показывает консоль, используя radeondrmfb фреймбуферное устройство.

7 ответов

setterm Ответ @whitequark - разумный инструмент для пользователей, но это еще не все.

Поведение по умолчанию при блокировке консоли включается в ядро ​​во время компиляции. Это настраивается во время загрузки с параметром consoleblank= или в пользовательском пространстве с setterm, Из документации ядра ( kernel-parameters.txt):

consoleblank=  [KNL] The console blank (screen saver) timeout in
               seconds. Defaults to 10*60 = 10mins. A value of 0
               disables the blank timer.

Вот варианты, их настройки по умолчанию в моей системе Ubuntu и сферы их влияния:

  • setterm -blank [0-60]; всегда сообщает 0 при запросе; эффективен при работе на реальном VT; влияет на все настоящие TTY; не эффективен при запуске в сеансах экрана на VT.
  • setterm -powerdown [0-60]; всегда сообщает "3]" (??); кажется, не имеет никакого эффекта. Ядра Ubuntu не включают APM_DISPLAY_BLANK, и это может быть связано.
  • consoleblank=N; по умолчанию 600 (10 минут); влияет на все реальные ВТ; влияет на сеансы экрана в VT; нет способа установить во время работы.

Таким образом, мои варианты для изменения по умолчанию один из следующих:

  1. добавлять setterm -blank X (X в минутах, 0 для отключения) в файл инициализации оболочки, например .bashrc.
  2. добавлять setterm -blank X в /etc/rc.local.
  3. добавлять consoleblank=Y (Y в секундах, 0 для отключения) в командной строке ядра, добавив его в списки параметров в / etc / default / grub, либо GRUB_CMDLINE_LINUX, либо GRUB_CMDLINE_LINUX_DEFAULT. (Не забудьте update-grub.)

Пытаться setterm -blank $minutes (или передайте 0, чтобы отключить); -powersave Вариант также может быть связан. setterm также есть множество других полезных опций.

Если вы хотите установить эти атрибуты при запуске системы, подумайте о написании начального сценария. Это всего лишь сценарий, размещенный в /etc/init.d каталог. Пусть это будет называться setterm:

#!/bin/sh
[ "$1" == "start" ] || exit 0 # only initialize everything when called as /etc/init.d/setterm start
for term in /dev/tty[0-9]*; do # select all ttyNN, but skip ttyS*
    setterm -blank 0 >$term <$term
    setterm -powersave off >$term <$term
done

Затем сделайте его исполняемым:

# chmod +x /etc/init.d/setterm

И наконец, создайте символические ссылки /etc/rcX.d (путь Debian):

# update-rc.d setterm defaults

(Если вы устали от такого поведения, сделайте # update-rc.d -f setterm remove, Обратите внимание, что -f должен быть первым аргументом).

Если кто-то ищет другое возможное решение для Debian (возможно, не Ubuntu):

В /etc/kbd/configпоищите настройку с именем "BLANK_TIME":

# screen blanking timeout.  monitor remains on, but the screen is cleared to
# range: 0-60 min (0==never)  kernels I've looked at default to 10 minutes.
# (see linux/drivers/char/console.c)
BLANK_TIME=30

Измените его на 0, это отключит его:

BLANK_TIME=0

Протестировано на Debian 6 и 7.

Если вы используете более новую версию Ubuntu, которая использует upstart, вы можете использовать:

for file in /etc/init/tty*.conf; do tty="/dev/`basename $file .conf`"; echo "post-start exec setterm -blank 0 -powersave off >$tty <$tty" | sudo tee -a "$file"; done

Небольшое объяснение того, что здесь происходит:

Более новые версии Ubuntu используют upstart для запуска системы. С помощью upstart консоли Linux настраиваются с файлами конфигурации, которые хранятся в / etc / init. Команда выше начинается с перебора каждого из этих файлов конфигурации:

for file in /etc/init/tty*.conf;

Имя конфигурационного файла tty в $ file используется для создания имени устройства tty:

tty="/dev/`basename $file .conf`";

Создается команда upstart "post-start", которая запускает "setterm", чтобы отключить блокировку экрана и энергосбережение после запуска tty:

echo "post-start exec setterm -blank 0 -powersave off >$tty <$tty"

И, наконец, эта команда добавляется в файл конфигурации upstart:

| sudo tee -a "$file";

Частные последовательности CSI консоли Linux

Установить sleep mode/screensaver время ввода (где X - время в минутах; 0 = никогда):

(с последовательной консоли)

echo -e '\033[9;X]' > /dev/tty1    

или (с консоли кадрового буфера)

echo -e '\033[9;X]'    

или чтобы установить его при каждой загрузке, используйте /etc/inittab:

tty1::sysinit:echo -e '\033[9;X]'

рефов:

В моих системах (различные выпуски RedHat Enterprise Linux) я обнаружил, что нужны разные подходы.

Для моих систем RHEL 5 и 6 я могу добавить строку

/bin/setterm -blank 0 -powerdown 0 -powersave off

в /etc/rc.local, Это отключает блокировку экрана консоли при запуске системы.

Я обнаружил, что это не работает в системах RHEL 7. На RHEL7 при запуске setterm из rc.local генерируется ошибка:

setterm: $TERM is not defined.

Команда работает из интерактивной оболочки, где определяется $TERM (как linux). Если я заставлю setterm использовать его:

/bin/setterm -term linux -blank 0 -powerdown 0 -powersave off

Тогда я получаю другую ошибку:

setterm: cannot (un)set powersave mode: Inappropriate ioctl for device

Хотя та же команда отлично работает в интерактивном сеансе. Настройка consoleblank параметр ядра сработал.

На RHEL7 отредактируйте /etc/default/grub и добавить consoleblank=0 к GRUB_CMDLINE_LINUX параметр. Тогда беги grub2-mkconfig -o /boot/grub2/grub.cfg и перезагрузите компьютер

Я не пробовал настройку consoleblank на RHEL5 или 6.

Добавление gnome-screensaver-command --exit к моему .profile файл исправил эту проблему для меня в Debian Linux (Wheezy).

Думаю, я бы добавил это, чтобы помочь другим, которые тянут свои волосы, пытаясь остановить гашение экрана.

Флажок под названием "Тусклый экран для экономии энергии" работает неправильно. Даже если этот флажок не установлен, он все равно будет очищать экран в соответствии с выбранным временем бездействия.

ОБНОВЛЕНИЕ: мне действительно нужно sleep 30 && /usr/bin/gnome-screensaver-command --exit & чтобы он работал правильно. Заставка GNOME запускается спустя много времени после обработки.profile.

Другие вопросы по тегам