Как изменить поведение гашения экрана на виртуальных терминалах Linux?
Например, если я переключусь на VT с X, войду в систему и оставлю систему в покое на 5 минут или около того, экран станет пустым, как заставка. Он возвращается с любым нажатием клавиши, как заставка.
В основном я просто хочу изменить время ожидания, но меня также интересуют другие настройки.
Если это поможет, одна из моих систем работает под управлением Ubuntu 10.04 со стандартными графическими драйверами. fbset
показывает консоль, использующую radeondrmfb
устройство кадрового буфера.
Ответы:
setterm
от @ whitequark это ответ является разумным инструментом в пользовательском пространстве, но это не вся история.Поведение по умолчанию при блокировке консоли включается в ядро во время компиляции. Это настраивается во время загрузки с параметром consoleblank = или в пользовательском пространстве с помощью
setterm
. Из документации ядра ( kernel-parameters.txt ):Вот варианты, их настройки по умолчанию в моей системе 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 X
это не сработало для меня из tmux , но отлично работало, когда я выходил из tmux перед запуском команды.GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=0"
и затем обновить конфигурацию grub с помощьюgrub[2]-mkconfig -o /boot/grub/grub.cfg
.3]
forsetterm -powerdown
- только половина истинного:setterm -powerdown 3 | hexdump -c
возвращает033 [ 1 4 ; 3 ]
. Не уверен, что следует интерпретировать эту escape-последовательность ...Попробуйте
setterm -blank $minutes
(или передайте 0, чтобы отключить);-powersave
Вариант также может быть связан.setterm
также есть множество других полезных опций.Если вы хотите установить эти атрибуты при запуске системы, подумайте о написании начального сценария. Это просто скрипт, размещенный в
/etc/init.d
каталоге. Пусть это будет называтьсяsetterm
:Затем сделайте его исполняемым:
И наконец, создайте символические ссылки /etc/rcX.d (путь Debian):
(Если вы устали от такого поведения, сделайте
# update-rc.d -f setterm remove
. Обратите внимание, что это-f
должен быть первый аргумент).источник
-powerdown
настройка, которая действует. как насчет настройки загрузки по умолчанию для всей системы? работаетsetterm -blank X
илиsetterm -powerdown Y
в /etc/rc.local (или ~ / .bashrc ) разумно?rc.local
самом деле работает. (Недавняяupstart
миграция испортила некоторые вещи, поскольку она, очевидно, существует и работает в моей системе.) В противном случае вы должны создать начальный скрипт. Это легко: в нашем случае он должен инициализировать все, когда передается вstart
качестве первого аргумента, и ничего не делать иначе. Я опишу это в своем ответе.setterm -blank X >/dev/ttyN
Кажется, команда не работает, поэтому я не думаю, что концепция initscript будет работать. наткнулся на параметр времени загрузки tho и провел еще несколько исследований. я, кажется, ошибаюсь насчет-powerdown
и-powersave
; не полностью протестированы, но они не работают в моей системе.setterm -blank X
работает, только от реального VT, и влияет на все VT, поэтому разумно запускать один раз через /etc/rc.local . (Upstart не убирает rc.local , только материал /etc/rcX.d .)setterm
генерирует escape-последовательностиstdout
, но проверяет тип TTY с помощьюstdin
: Я только что проверил, иsetterm ... >/dev/ttyN </dev/ttyN
работает как задумано.Если кто-то ищет другое возможное решение для Debian (возможно, не Ubuntu):
В
/etc/kbd/config
, найдите параметр под названием «BLANK_TIME»:Измените его на 0, это отключит его:
Протестировано на Debian 6 и 7.
источник
Если вы используете более новую версию Ubuntu, которая использует upstart, вы можете использовать:
Небольшое объяснение того, что здесь происходит:
Более новые версии Ubuntu используют upstart для запуска системы. С помощью upstart консоли Linux настраиваются с файлами конфигурации, которые хранятся в / etc / init. Команда выше начинается с перебора каждого из этих файлов конфигурации:
Имя конфигурационного файла tty в $ file используется для создания имени устройства tty:
Создается команда upstart «post-start», которая запускает «setterm», чтобы отключить блокировку экрана и энергосбережение после запуска tty:
И, наконец, эта команда добавляется в файл конфигурации upstart:
источник
В моих системах (различные выпуски 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.источник
</dev/tty1 >/dev/tty1
или что-то, чтобы заставить это работатьЧастные последовательности CSI консоли Linux
Чтобы установить
sleep mode/screensaver
время входа (где X - время в минутах; 0 = никогда):(с последовательной консоли)
или (с консоли кадрового буфера)
или чтобы установить его при каждой загрузке, используйте
/etc/inittab
:рефов:
источник
Добавление
gnome-screensaver-command --exit
в мой.profile
файл исправило эту проблему для меня в Debian Linux (Wheezy).Думаю, я бы добавил это, чтобы помочь другим, которые тянут свои волосы, пытаясь остановить гашение экрана.
Флажок под названием «Тусклый экран для экономии энергии» работает неправильно. Даже если этот флажок не установлен, он все равно будет очищать экран в соответствии с выбранным временем бездействия.
ОБНОВЛЕНИЕ: я действительно должен
sleep 30 && /usr/bin/gnome-screensaver-command --exit &
был заставить это работать должным образом. Заставка GNOME запускается спустя много времени после обработки .profile.источник