web-dev-qa-db-fra.com

Changer le comportement de suppression d'écran de la console Linux

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.

37
quack quixote

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:

  1. Ajoutez setterm -blank X (X en minutes, 0 à désactiver) dans un fichier d'initialisation de shell tel que . Bashrc .
  2. Ajoutez setterm -blank X à /etc/rc.local .
  3. Ajoutez 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.)
40
quack quixote

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).

9
whitequark

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.

3
basic6

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";
2
Chris Pick

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.

2
David C.

Séquences CSI privées de la console Linux

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:

1
yurenchen

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.

0
mcchinsy