¿Cómo cambio el comportamiento de supresión de pantalla en terminales virtuales Linux?
Por ejemplo, si cambio a un VT desde X, inicio sesión y dejo el sistema solo durante 5 minutos más o menos, la pantalla se pondrá en blanco como un protector de pantalla. Vuelve con cualquier pulsación de tecla, como un protector de pantalla.
Principalmente solo quiero cambiar el tiempo de espera, pero también estoy interesado en otras configuraciones.
Si ayuda, uno de mis sistemas está ejecutando Ubuntu 10.04 con los controladores de gráficos de stock. fbsetmuestra la consola usando el radeondrmfbdispositivo framebuffer.
linux
console
screensaver
framebuffer
virtual-terminal
quijote curandero
fuente
fuente

Respuestas:
settermLa respuesta de @ whitequark es una herramienta de espacio de usuario razonable, pero no es toda la historia.El comportamiento predeterminado de supresión de la consola se integra en el núcleo en el momento de la compilación. Es configurable en el momento del arranque con el parámetro consolaleblank = , o en el espacio de usuario con
setterm. De la documentación del kernel ( kernel-parameter.txt ):Estas son las opciones, sus valores predeterminados en mi sistema Ubuntu y sus esferas de influencia:
setterm -blank [0-60]; siempre informa 0 cuando se le consulta; eficaz cuando se ejecuta en un VT real; afecta a todos los TTY reales; no es efectivo cuando se ejecuta en sesiones de pantalla en un VT.setterm -powerdown [0-60]; siempre informa "3]" (??); no parece tener ningún efecto Los núcleos de Ubuntu no habilitan APM_DISPLAY_BLANK , y esto podría estar relacionado.consoleblank=N; el valor predeterminado es 600 (10 minutos); afecta a todos los VT reales; afecta las sesiones de pantalla en un VT; No hay forma de configurar mientras se ejecuta.Entonces, mis opciones para cambiar el valor predeterminado son una de las siguientes:
setterm -blank X(X en minutos, 0 para deshabilitar) a un archivo de inicio de shell como .bashrc .setterm -blank Xa /etc/rc.local .consoleblank=Y(Y en segundos, 0 para deshabilitar) a la línea de comando del kernel agregándolo a las listas de parámetros en / etc / default / grub , ya sea GRUB_CMDLINE_LINUX o GRUB_CMDLINE_LINUX_DEFAULT . (No te olvides de hacerloupdate-grub)fuente
setterm -blank Xno funcionó para mí desde tmux , pero funcionó perfectamente cuando salí de tmux antes de ejecutar el comando.GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=0"y luego actualizar su configuración de grub congrub[2]-mkconfig -o /boot/grub/grub.cfg.3]porquesetterm -powerdownes solo la mitad de verdad:setterm -powerdown 3 | hexdump -cretornos033 [ 1 4 ; 3 ]. No estoy seguro de qué debería interpretar esta secuencia de escape ...Intente
setterm -blank $minutes(o pase 0 para deshabilitar);-powersaveLa opción también puede estar relacionada.settermtambién tiene muchas otras opciones útiles.Si desea establecer estos atributos en el inicio del sistema, considere escribir un initscript. Esto es solo un script colocado en el
/etc/init.ddirectorio. Que se llamesetterm:Luego hazlo ejecutable:
Y finalmente, cree los enlaces simbólicos /etc/rcX.d (a la manera de Debian):
(Si se cansa de ese comportamiento, hágalo
# update-rc.d -f setterm remove. Tenga en cuenta que ese-fdebe ser el primer argumento).fuente
-powerdownconfiguración que está vigente. ¿Qué pasa con la configuración de un arranque en todo el sistema predeterminado? ¿está funcionandosetterm -blank Xosetterm -powerdown Yen /etc/rc.local (o ~ / .bashrc ) razonable?rc.localrealmente funciona. (Laupstartmigración reciente arruinó algunas cosas, aparentemente existe y funciona en mi sistema). De lo contrario, debe crear un initscript. Eso es fácil: en nuestro caso, debe inicializar todo cuando se pasastartcomo primer argumento, y no hacer nada diferente. Lo describiré en mi respuesta.setterm -blank X >/dev/ttyNno parece funcionar, así que no creo que el concepto initscript funcione. encontré un parámetro de tiempo de arranque e investigé un poco más. Parece que estoy equivocado acerca de-powerdowny-powersave; no lo he probado completamente, pero esos no funcionan en mi sistema.setterm -blank Xfunciona, solo desde un VT real, y afecta a todos los VT, por lo que es razonable ejecutarlo una vez a través de /etc/rc.local . (Upstart no quita rc.local , solo las cosas /etc/rcX.d .)settermemite secuencias de escapestdout, pero comprueba el tipo de TTY constdin: Acabo de comprobar ysetterm ... >/dev/ttyN </dev/ttyNfunciona según lo previsto.Si alguien está buscando otra posible solución para Debian (posiblemente no Ubuntu):
En
/etc/kbd/config, busque una configuración llamada "BLANK_TIME":Cámbielo a 0, esto lo deshabilitará:
Probado en Debian 6 y 7.
fuente
Si está ejecutando un Ubuntu más nuevo que usa upstart, puede usar:
Una pequeña explicación de lo que está pasando aquí:
Las versiones más nuevas de Ubuntu usan el arranque para el inicio del sistema. Con el arranque, las consolas de Linux se configuran con archivos de configuración almacenados en / etc / init. El comando anterior comienza iterando sobre cada uno de esos archivos de configuración:
El nombre del archivo de configuración inicial de tty en $ file se usa para construir el nombre del dispositivo tty:
Se construye un comando "post-start" inicial que ejecuta "setterm" para deshabilitar la supresión de pantalla y el ahorro de energía después de que se ha iniciado el tty:
Y finalmente, ese comando se agrega al archivo de configuración inicial:
fuente
En mis sistemas (varias versiones de RedHat Enterprise Linux), descubrí que se necesitan diferentes enfoques.
Para mis sistemas RHEL 5 y 6, puedo agregar la línea
/bin/setterm -blank 0 -powerdown 0 -powersave offa
/etc/rc.local. Esto desactiva la pantalla en blanco de la consola al iniciar el sistema.Descubrí que esto no funciona en los sistemas RHEL 7. En RHEL7, ejecutar setterm desde rc.local hace que se genere un error:
setterm: $TERM is not defined.El comando funciona desde un shell interactivo, donde se define $ TERM (como
linux). Si fuerzo a setterm a usarlo:/bin/setterm -term linux -blank 0 -powerdown 0 -powersave offEntonces me sale un error diferente:
setterm: cannot (un)set powersave mode: Inappropriate ioctl for deviceAunque el mismo comando funciona bien desde una sesión interactiva. Establecer el
consoleblankparámetro del núcleo funcionó.En RHEL7, edite
/etc/default/gruby agregueconsoleblank=0alGRUB_CMDLINE_LINUXparámetro. Luego corregrub2-mkconfig -o /boot/grub2/grub.cfgy reinicia.No he intentado configurar
consoleblanken RHEL5 o 6.fuente
</dev/tty1 >/dev/tty1o algo para que funcioneConsola Linux Secuencias CSI privadas
Para establecer el
sleep mode/screensavertiempo de entrada (donde X es un tiempo en minutos; 0 = nunca):(desde la consola en serie)
o (desde la consola framebuffer)
o para configurarlo en cada arranque, use
/etc/inittab:refs:
fuente
Agregar
gnome-screensaver-command --exita mi.profilearchivo solucionó este problema para mí en Debian Linux (Wheezy).Pensé que agregaría esto para ayudar a otros que se están sacando el pelo tratando de dejar de dejar la pantalla en blanco.
Una casilla de verificación titulada "Atenuar pantalla para ahorrar energía" funciona correctamente. Incluso sin marcar, TODAVÍA dejará en blanco la pantalla de acuerdo con el tiempo de inactividad seleccionado.
ACTUALIZACIÓN: en realidad necesitaba
sleep 30 && /usr/bin/gnome-screensaver-command --exit &que funcionara correctamente. El protector de pantalla de GNOME parece comenzar mucho después de que se haya procesado .profile.fuente