¿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. fbset
muestra la consola usando el radeondrmfb
dispositivo framebuffer.
linux
console
screensaver
framebuffer
virtual-terminal
quijote curandero
fuente
fuente
Respuestas:
setterm
La 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 X
a /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 X
no 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 -powerdown
es solo la mitad de verdad:setterm -powerdown 3 | hexdump -c
retornos033 [ 1 4 ; 3 ]
. No estoy seguro de qué debería interpretar esta secuencia de escape ...Intente
setterm -blank $minutes
(o pase 0 para deshabilitar);-powersave
La opción también puede estar relacionada.setterm
tambié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.d
directorio. 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-f
debe ser el primer argumento).fuente
-powerdown
configuración que está vigente. ¿Qué pasa con la configuración de un arranque en todo el sistema predeterminado? ¿está funcionandosetterm -blank X
osetterm -powerdown Y
en /etc/rc.local (o ~ / .bashrc ) razonable?rc.local
realmente funciona. (Laupstart
migració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 pasastart
como primer argumento, y no hacer nada diferente. Lo describiré en mi respuesta.setterm -blank X >/dev/ttyN
no 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-powerdown
y-powersave
; no lo he probado completamente, pero esos no funcionan en mi sistema.setterm -blank X
funciona, 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 .)setterm
emite secuencias de escapestdout
, pero comprueba el tipo de TTY constdin
: Acabo de comprobar ysetterm ... >/dev/ttyN </dev/ttyN
funciona 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 off
a
/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 off
Entonces me sale un error diferente:
setterm: cannot (un)set powersave mode: Inappropriate ioctl for device
Aunque el mismo comando funciona bien desde una sesión interactiva. Establecer el
consoleblank
parámetro del núcleo funcionó.En RHEL7, edite
/etc/default/grub
y agregueconsoleblank=0
alGRUB_CMDLINE_LINUX
parámetro. Luego corregrub2-mkconfig -o /boot/grub2/grub.cfg
y reinicia.No he intentado configurar
consoleblank
en RHEL5 o 6.fuente
</dev/tty1 >/dev/tty1
o algo para que funcioneConsola Linux Secuencias CSI privadas
Para establecer el
sleep mode/screensaver
tiempo 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 --exit
a mi.profile
archivo 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