Изменить поведение гашения экрана консоли 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; нет способа установить во время работы.
Таким образом, мои варианты для изменения по умолчанию один из следующих:
- добавлять
setterm -blank X
(X в минутах, 0 для отключения) в файл инициализации оболочки, например .bashrc. - добавлять
setterm -blank X
в /etc/rc.local. - добавлять
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]'
рефов:
- http://www.armadeus.org/wiki/index.php?title=Framebuffer
- man console_codes
В моих системах (различные выпуски 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.