Comment changer le comportement de suppression d'écran sur les terminaux virtuels Linux?
Par exemple, si je passe à un VT à partir de X, que je me connecte et que je laisse le système tranquille pendant environ 5 minutes, l’écran s’affichera comme un économiseur d’écran. Il revient avec n'importe quelle touche, comme un économiseur d'écran.
La plupart du temps, je veux juste changer le délai d'attente, mais je suis également intéressé par d'autres paramètres.
Si cela peut aider, l’un de mes systèmes exécute Ubuntu 10.04 avec les pilotes graphiques courants. fbset
affiche la console à l’aide du radeondrmfb
framebuffer device.
setterm
de La réponse de @ whitequark est un outil d'espace utilisateur raisonnable, mais ce n'est pas toute l'histoire.
Le comportement de suppression de la console par défaut est intégré au 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] The console blank (screen saver) timeout in
seconds. Defaults to 10*60 = 10mins. A value of 0
disables the blank timer.
Voici les options, leurs valeurs par défaut sur mon système Ubuntu et leurs sphères d'influence:
setterm -blank [0-60]
; indique toujours 0 lorsqu'il est interrogé; efficace lorsqu'il est exécuté sur un vrai VT; affecte tous les vrais ATS; non efficace lorsqu'il est exécuté dans des sessions d'écran sur un VT.setterm -powerdown [0-60]
; rapporte toujours "3]" (??); ne semble pas avoir d'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 TP; affecte les sessions d'écran dans un VT; aucun moyen de définir en cours d'exécution.Donc, mes options pour changer la valeur par défaut sont l’une des suivantes:
setterm -blank X
(X en minutes, 0 à désactiver) dans un fichier d'initialisation de shell tel que . Bashrc .setterm -blank X
à /etc/rc.local .consoleblank=Y
(Y en secondes, 0 à 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
.)Essayez setterm -blank $minutes
(ou passez 0 pour désactiver); L'option -powersave
peut également être liée. setterm
propose également de nombreuses autres options utiles.
Si vous souhaitez définir ces attributs au démarrage du système, envisagez d'écrire un script initscript. Ceci est juste un script placé dans le répertoire /etc/init.d
. Qu'on l'appelle setterm
:
#!/bin/sh
[ "$1" == "start" ] || exit 0 # only initialize everything when called as /etc/init.d/setterm start
for term in /dev/tty[0-9]*; do # select all ttyNN, but skip ttyS*
setterm -blank 0 >$term <$term
setterm -powersave off >$term <$term
done
Puis 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).
Si quelqu'un recherche une autre solution possible pour Debian (éventuellement 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 en 0, cela le désactivera:
BLANK_TIME=0
Testé sur Debian 6 et 7.
Si vous utilisez une Ubuntu plus récente utilisant upstart, vous pouvez utiliser:
for file in /etc/init/tty*.conf; do tty="/dev/`basename $file .conf`"; echo "post-start exec setterm -blank 0 -powersave off >$tty <$tty" | Sudo tee -a "$file"; done
Une petite explication de ce qui se passe ici:
Les versions les plus récentes d'Ubuntu utilisent la méthode upstart pour le démarrage du système. Avec Upstart, les consoles Linux sont configurées avec des fichiers de configuration stockés dans/etc/init. La commande ci-dessus commence par parcourir chacun de ces fichiers de configuration:
for file in /etc/init/tty*.conf;
Le nom du fichier de configuration upstart du tty dans $ file est utilisé pour construire le nom du périphérique tty:
tty="/dev/`basename $file .conf`";
Une commande "post-start" upstart est construite qui exécute "setterm" pour désactiver le masquage d'écran et l'économie d'énergie après le démarrage du terminal:
echo "post-start exec setterm -blank 0 -powersave off >$tty <$tty"
Et enfin, cette commande est ajoutée au fichier de configuration upstart:
| Sudo tee -a "$file";
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 peux ajouter la ligne
/bin/setterm -blank 0 -powerdown 0 -powersave off
à /etc/rc.local
. Ceci désactive la suppression de l'écran de la console au démarrage du système.
J'ai trouvé que cela ne fonctionnait pas sur les systèmes RHEL 7. Sous RHEL7, l’exécution de setterm à partir de rc.local entraîne la génération d’une erreur:
setterm: $TERM is not defined.
La commande fonctionne à partir d'un shell interactif, où $ TERM est défini (sous la forme linux
). Si je force setterm à l'utiliser:
/bin/setterm -term linux -blank 0 -powerdown 0 -powersave off
Ensuite, je reçois une erreur différente:
setterm: cannot (un)set powersave mode: Inappropriate ioctl for device
Même si la même commande fonctionne correctement à partir d'une session interactive. La définition du paramètre de noyau consoleblank
a fonctionné.
Sur RHEL7, éditez /etc/default/grub
et ajoutez consoleblank=0
au paramètre GRUB_CMDLINE_LINUX
. Ensuite, lancez grub2-mkconfig -o /boot/grub2/grub.cfg
et redémarrez.
Je n'ai pas essayé de définir consoleblank
sur RHEL5 ou 6.
Pour définir sleep mode/screensaver
entrer le temps (où X est un temps en minute; 0 = jamais):
(depuis la console série)
echo -e '\033[9;X]' > /dev/tty1
ou (depuis 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]'
réfs:
Ajouter gnome-screensaver-command --exit
à mon fichier .profile
a résolu ce problème sous Debian Linux (Wheezy).
Je pensais que j'ajouterais ceci pour aider les autres qui se coupent les cheveux en essayant d'arrêter le blanking.
Une case à cocher intitulée "Diminution de l’écran d’économie d’énergie" fonctionne mal. Même décoché, il videra TOUJOURS l’écran en fonction du temps d’inactivité sélectionné.
UPDATE: En fait, j'avais besoin de sleep 30 && /usr/bin/gnome-screensaver-command --exit &
pour que cela fonctionne correctement. L'économiseur d'écran GNOME semble démarrer longtemps après le traitement du fichier .profile.