44 votes

Changer le comportement de l'extinction de l'écran de la console Linux

Comment modifier le comportement de l'écran de veille sur les terminaux virtuels Linux ?

Par exemple, si je bascule vers un VT depuis X, que je me connecte et que je laisse le système inactif pendant environ 5 minutes, l'écran se mettra en veille comme un économiseur d'écran. Il revient avec n'importe quelle pression sur une touche, comme un économiseur d'écran.

En général, je veux juste modifier le délai, mais je suis aussi intéressé par d'autres paramètres.

Si cela peut aider, l'un de mes systèmes fonctionne sous Ubuntu 10.04 avec les pilotes graphiques d'origine. fbset montre que la console utilise le périphérique framebuffer radeondrmfb.

56voto

user12786 Points 454

setterm de la réponse de @whitequark est un outil convivial pour les utilisateurs, mais ce n'est pas toute l'histoire.

Le comportement par défaut de l'extinction de l'écran de la console est intégré dans le noyau lors de la compilation. Il est configurable au démarrage avec le paramètre consoleblank=, ou dans l'espace utilisateur avec setterm. Dans la documentation du noyau (kernel-parameters.txt):

consoleblank= [KNL] Le délai d'extinction de l'écran de la console
en secondes. Par défaut à 10*60 = 10 minutes. Une valeur de 0
désactive le minuteur d'extinction.

Voici les options, leurs valeurs par défaut sur mon système Ubuntu et leurs sphères d'influence:

  • setterm -blank [0-60]; rapporte toujours 0 lorsqu'interrogé; efficace lorsqu'exécuté sur un vrai VT; affecte tous les vrais TTYs; pas efficace lorsqu'exécuté dans des sessions screen sur un VT.
  • setterm -powerdown [0-60]; rapporte toujours "3]" (??); ne semble avoir aucun effet. Les noyaux Ubuntu n'activent pas APM_DISPLAY_BLANK, et cela pourrait être lié.
  • consoleblank=N; par défaut à 600 (10 minutes); affecte tous les vrais VTs; affecte les sessions screen dans un VT; pas de moyen de définir en cours d'exécution.

Ainsi, mes options pour modifier le comportement par défaut sont les suivantes:

  1. Ajouter setterm -blank X (X en minutes, 0 pour désactiver) dans un fichier d'initialisation de shell comme .bashrc.
  2. Ajouter setterm -blank X dans /etc/rc.local.
  3. Ajouter consoleblank=Y (Y en secondes, 0 pour désactiver) à la ligne de commande du noyau en l'ajoutant aux listes de paramètres dans /etc/default/grub, soit GRUB_CMDLINE_LINUX ou GRUB_CMDLINE_LINUX_DEFAULT. (N'oubliez pas de update-grub.)

12voto

VolkA Points 10297

Essayez setterm -blank $minutes (ou passez 0 pour désactiver); l'option -powersave peut également être liée. setterm a aussi beaucoup d'autres options utiles.

Si vous voulez définir ces attributs au démarrage du système, envisagez d'écrire un script d'initialisation. C'est simplement un script placé dans le répertoire /etc/init.d. Appelons-le setterm:

#!/bin/sh
[ "$1" == "start" ] || exit 0 # initialise tout uniquement lorsqu'il est appelé en tant que /etc/init.d/setterm start
for term in /dev/tty[0-9]*; do # sélectionner tous les ttyNN, mais sauter ttyS*
    setterm -blank 0 >$term <$term
    setterm -powersave off >$term <$term

Ensuite, rendez-le exécutable:

# chmod +x /etc/init.d/setterm

Et enfin, créez les liens symboliques /etc/rcX.d (à la manière de Debian):

# update-rc.d setterm defaults

(Si vous en avez assez de ce comportement, faites # update-rc.d -f setterm remove. Notez que -f doit être le premier argument).

3voto

basic6 Points 2392

Si quelqu'un est à la recherche d'une autre solution possible pour Debian (peut-être pas Ubuntu) :

Dans /etc/kbd/config, recherchez un paramètre appelé "BLANK_TIME" :

# screen blanking timeout.  monitor remains on, but the screen is cleared to
# range: 0-60 min (0==never)  kernels I've looked at default to 10 minutes.
# (see linux/drivers/char/console.c)
BLANK_TIME=30

Changez-le à 0, cela le désactivera :

BLANK_TIME=0

Testé sur Debian 6 et 7.

3voto

David C. Points 965

Sur mes systèmes (différentes versions de RedHat Enterprise Linux), j'ai constaté que différentes approches sont nécessaires.

Pour mes systèmes RHEL 5 et 6, je suis capable d'ajouter la ligne

/bin/setterm -blank 0 -powerdown 0 -powersave off

dans /etc/rc.local. Cela désactive le blanking de l'écran de la console au démarrage du système.

J'ai constaté que cela ne fonctionne pas sur les systèmes RHEL 7. Sur RHEL7, exécuter setterm depuis rc.local génère une erreur :

setterm: $TERM n'est pas défini.

La commande fonctionne à partir d'un shell interactif, où $TERM est défini (comme linux). Si je force setterm à l'utiliser :

/bin/setterm -term linux -blank 0 -powerdown 0 -powersave off

Alors j'obtiens une erreur différente :

setterm: cannot (un)set powersave mode: Inappropriate ioctl for device

Même si la même commande fonctionne bien à partir d'une session interactive. Définir le paramètre kernel consoleblank a fonctionné.

Sur RHEL7, éditer /etc/default/grub et ajouter consoleblank=0 au paramètre GRUB_CMDLINE_LINUX. Ensuite exécuter grub2-mkconfig -o /boot/grub2/grub.cfg et redémarrer.

Je n'ai pas essayé de définir consoleblank sur RHEL5 ou 6.

3voto

BrianCooksey Points 425

Séquences CSI privées de la console Linux

Pour définir le temps d'entrée du mode veille/économiseur d'écran (où X est un temps en minutes ; 0 = jamais) :

(de la console série)

echo -e '\033[9;X]' > /dev/tty1    

ou (de la console framebuffer)

echo -e '\033[9;X]'    

ou pour le définir à chaque démarrage, utilisez /etc/inittab :

tty1::sysinit:echo -e '\033[9;X]'

refs:

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X