Отключить гашение экрана в текстовой консоли

75

Я использую кластеры Linux, в основном на SLES10. Серверы в основном блейд-серверы, доступ к которым осуществляется через удаленную консоль. В серверной комнате есть настоящая консоль, но выключенная.

Я хотел бы отключить гашение экрана, так как это не имеет смысла и создает неудобства. Вы должны нажать клавишу, чтобы увидеть, если вы подключены, что является болью. Мы работаем на уровне выполнения 3, поэтому консоль находится в текстовом режиме, без участия X11.

markus_b
источник
SLES10 использует SysV init. Многие дистрибутивы используют systemd, вот возможное решение для Arch . Системы Debian 6 и 7 по умолчанию используют kbd, нажмите здесь .
basic6
Для Debian см. Unix.stackexchange.com/questions/238846 .
JdeBP

Ответы:

85

Вы можете проверить, какое время ожидания ядро ​​использует для гашения виртуальной консоли:

$ cat /sys/module/kernel/parameters/consoleblank
600

Этот файл доступен только для чтения, а время ожидания указывается в секундах. Текущее значение по умолчанию составляет 10 минут.

Вы можете изменить это значение, введя следующую команду на виртуальной консоли (если вы находитесь внутри xterm, вам нужно перейти на виртуальную консоль, нажав, например, Ctrl+ Alt+ F1).

$ setterm -blank VALUE

Где новое ЗНАЧЕНИЕ указано в минутах . Значение 0 отключает гашение:

$ cat /sys/module/kernel/parameters/consoleblank
600
$ setterm -blank 0
$ cat /sys/module/kernel/parameters/consoleblank
0

У setterm есть другие опции, связанные с энергосбережением. Наиболее полезная комбинация выглядит так:

$ setterm -blank 0 -powersave off

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

  1. добавить consoleblank=0в параметры ядра (редактировать конфигурацию grub)
  2. добавить setterm -blank 0команду в rc-localэквивалентный сценарий запуска
  3. добавьте settermвывод, /etc/issueпоскольку /etc/issueон выводится на каждой виртуальной консоли:

    # setterm -blank 0 >> /etc/issue

Выберите один из вариантов выше.

maxschlepzig
источник
2
PS: В системе Ubuntu 11.10 (Thinkpad X200) я заметил ошибку, из-за которой отключение ядра ядром мешает работе сеанса X11. Это означает, что ровно через 10 минут после последнего нажатия клавиши X11 заглушается экран, и вам нужно переключиться на виртуальную консоль, чтобы вернуть экран X11 (очень раздражает, например, при воспроизведении видео). Это не зависит от настроек DPMS / заставки в X11 (подумайте xsetи т. Д.). Таким образом, отключение блокировки виртуальной консоли, как описано выше, является быстрым обходным решением для уязвимых систем.
maxschlepzig
хммм. По какой-то причине я не вижу /sys/module/kernel/parameters/consoleblankна своем сервере CentOS 5.x. Может ли он быть установлен под другим именем?
Майк Б
1
На RHEL 5 и 6, я обнаружил , что ввод /bin/setterm -blank 0 -powerdown 0 -powersave offв /etc/rc.localбудет работать большой. На RHEL 7, однако, он потерпит неудачу. Добавление consoleblank=0параметров ядра работает на этой платформе.
Дэвид С.
7
Обратите внимание, что на самом деле вам не нужно работать settermв виртуальной консоли. Вы можете также перенаправить его на него: setterm -blank 0 > /dev/tty1работает просто отлично. Или вы можете использовать setterm -blank < /dev/tty1для запроса текущего значения из tty1 или setterm -blank force < /dev/tty1для принудительного гашения.
Александр Амелькин
@AlexanderAmelkin - перенаправление в / из / dev / tty1 не работает в RHEL 7. Какой дистрибутив вы использовали для этого? / dev / tty1 действительно является локальной консолью, но ни та, ни / dev / console, похоже, ничего не сделали.
Пол
15

Попробуйте использовать это:

setterm -blank
Уку Лоськит
источник
1
@markus_b: Так что добавьте эту команду в сценарий инициализации (что-то вроде, /etc/init/markus-console.confесли вы используете Upstart или /etc/init.d/markus-console.shплюс символические /etc/rd?.dссылки для SysVinit, я не знаю фактических местоположений SuSE).
Жиль "ТАК - перестань быть злым"
2
@mattdm, не соответствует действительности - systemdобычно поставляется со rc-localслужбой совместимости - или вы можете легко добавить пользовательские службы ...
maxschlepzig
3
@mattdm Почему вы не можете написать модуль, который запускает эту команду?
Кириас
1
СОВЕТ: Сначала выйдите из tmux , иначе это не сработает.
Коди Хесс
14

Согласно: https://wiki.archlinux.org/index.php/Display_Power_Management_Signaling#DPMS_Interaction_in_a_console_with_setterm

Запретить отключение экрана (в консоли)

$ setterm -blank 0 -powerdown 0

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

# echo -ne "\033[9;0]" >> /etc/issue

Гжегож Вежовецкий
источник
3
Второе решение работает как чудо на Marvell ARM Debian. Все остальные решения ничего не делают.
Алексей Свиридов
13

Я реализовал и протестировал следующую конфигурацию, которая отлично работает на sles10, моей рабочей лошадке на данный момент.

В

/etc/init.d/boot.local

Добавлять

setterm -blank

похоже, это все, что нужно. Спасибо за Uku Loskit и Gilles за толчок в правильном направлении.

markus_b
источник
1
Я безжалостно отредактировал ваш ответ, так что не стесняйтесь отменить, если вам это не нравится. Кроме того, пожалуйста, примите ваш ответ, потому что это фактическое решение. Вы не должны принимать ответ только потому, что вы благодарны, что он привел вас к реальному ответу, если на самом деле есть лучший ответ.
Чепанг
Извините, нравится оригинальная версия лучше.
markus_b
Я должен был добавить ответы с наибольшим количеством голосов - полномочия исчезают, поскольку ipmi на моей системной плате становится глупым, если у него не было обеих частей этого. к сожалению, он не сохраняет настройки между использованиями, и когда эти функции выбрасываются в окно, оно выходит на передний план и начинает циклически переключать окно примерно на 4 разных размера раз в секунду или два, делая практически невозможным захват окна и изменение его размера вручную / выкинуть термин из режима энергосбережения :(
Кендрик
13

Единственное постоянное решение - добавить consoleblank=0в командную строку ядра. Вы можете просмотреть значение (по умолчанию 600 секунд) в:

/sys/module/kernel/parameters/consoleblank

(обратите внимание, что файл доступен только для чтения). Единственный способ изменить значение consoleblank - это перезагрузиться с новой опцией командной строки ядра.

amcnabb
источник
3
Последнее предложение неверно - вам не нужно перезагружаться, чтобы изменить значение consoleblank. Смотри мой ответ.
maxschlepzig
Я не нашел setterm -blank для надежной работы. Иногда кажется, что сбрасывается после выхода из системы или переключения на другие виртуальные терминалы.
amcnabb
Чтобы добавить этот постоянный параметр с помощью grub, отредактируйте /boot/grub/grub.conf и добавьте consoleblank = 0 в строки, начинающиеся с «kernel / boot / vmlinuz ...». Затем перезагрузите компьютер.
Хойлен
1
«только» здесь похоже на строковое слово ...
notlesh
5

Если вы хотите предотвратить только пропадание экрана после входа в систему, просто добавьте setterm -powersave off -blank 0к $HOME/.bash_profileсоответствующим пользователям.

jurijcz
источник
5

Я был действительно сбит с толку этой проблемой. Все вышеперечисленные приемы с использованием setterm и перенаправления из / в / dev / tty0 не сработали из моего ssh.

Тогда я понял способ отключить его:

TERM=linux setterm -blank 0 -powerdown 0  -powersave off >/dev/tty0 </dev/tty0

TERM = linux заменяет TERM по умолчанию (на моей машине это xterm-256color) и помогает setterm запрашивать правильные параметры из tty0.

Вы можете проверить результат по

cat /sys/module/kernel/parameters/consoleblank

Должно быть 0. Если это 600, трюк не сработал.

Георгий Шуклин
источник
3

/usr/bin/setterm -powerdown 0 может также помочь

CND
источник