#linux #консоль #терминал
Я администрирую Linux-серверы (разных дистрибутивов - Ubuntu server, CentOS, Fedora) - физические и виртуальные машины. У большиснтва из них есть неприятная особенность - если в "физическую консоль" (которая не ssh, а в аппаратрном мониторе с аппаратной клавиатурой, реальной или удалённой через iKVM) длительное время ничего не "писать" с клавиатуры, она "гаснет". В реальности это выглядит так: подходишь к серверу с физическим монитором, цепляешь его - монитор показывает чёрный экран. Цепляешь клавиатуру, нажимаешь any key - монитор оживает и становится видна "физическая консоль" (если речь идёт о машине без иксов - она видна всегда, начиная с загрузки ОС, если иксы есть - то её можно достичь через Ctrl+Alt+F1). Или подключаешься к виртуальной машине по VNC - и то же самое, пока не тронешь клавиатуру - картинки нет. Речь не идёт о "скринсейвере", это засыпание консоли происходит именно в текстовом режиме. Как отучить Linux-хосты от такого поведения?
Ответы
Ответ 1
Описанное поведение исходит напрямую от ядра 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 меняется от ядра к ядру и от дистрибутива к дистрибутиву, т.е. считать это способ вполне универсальным нельзя
Комментариев нет:
Отправить комментарий