Я администрирую Linux-серверы (разных дистрибутивов - Ubuntu server, CentOS, Fedora) - физические и виртуальные машины. У большиснтва из них есть неприятная особенность - если в "физическую консоль" (которая не ssh, а в аппаратрном мониторе с аппаратной клавиатурой, реальной или удалённой через iKVM) длительное время ничего не "писать" с клавиатуры, она "гаснет".
В реальности это выглядит так: подходишь к серверу с физическим монитором, цепляешь его - монитор показывает чёрный экран. Цепляешь клавиатуру, нажимаешь any key - монитор оживает и становится видна "физическая консоль" (если речь идёт о машине без иксов - она видна всегда, начиная с загрузки ОС, если иксы есть - то её можно достичь через Ctrl+Alt+F1). Или подключаешься к виртуальной машине по VNC - и то же самое, пока не тронешь клавиатуру - картинки нет.
Речь не идёт о "скринсейвере", это засыпание консоли происходит именно в текстовом режиме.
Как отучить Linux-хосты от такого поведения?
Ответ
Описанное поведение исходит напрямую от ядра Linux, видимо это привет из далёкого прошлого, когда к таким хостам подключались текстовые терминалы с люминофорными устройствами визуализации, которые нужно было беречь от выгорания.
Проверить, через какое время физичекский терминал "погаснет" при отсутсвии пользовательского ввода в него, можно посмотрев на содержимое файла /sys/module/kernel/parameters/consoleblank:
$ cat /sys/module/kernel/parameters/consoleblank
600
Этот файл доступен только на чтение, изменить настройку, перезаписав его, нельзя. Значение в нём - это секунды, то есть в приведённом примере консоль "гаснет" через 10 минут простоя.
Чтобы отключить это поведение глобально и навсегда, следует добавить строку consoleblank=0 к параметрам ядра в конфиге grub и перезагрузить ОС (не забыть про update-grub после редактирования). Например, так:
$ cat /etc/default/grub | grep -v '#'
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=7
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="consoleblank=0"
После перезагрузки видим, что параметры ядром считались и приняты:
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-4.6.0-040600-generic root=UUID=544c13df-3ff3-47ba-94cc-407e414c6906 ro consoleblank=0
И настройка "засыпания" консоли изменилась:
$ cat /sys/module/kernel/parameters/consoleblank
0
Изменить этот параметр на лету, без перезагрузки, можно с помощью команды setterm, например так: setterm -blank 0 или даже так: setterm -blank 0 -powerdown 0 -powersave off, однако тут есть целых два "НО":
это работает только, если команду setterm вводить в "физическую" консоль (Ctrl+Alt+F1), а при вводе через ssh не работает
в Интернете пишут, что поведение setterm меняется от ядра к ядру и от дистрибутива к дистрибутиву, т.е. считать это способ вполне универсальным нельзя
Комментариев нет:
Отправить комментарий