Ändern Sie das Löschverhalten der Linux-Konsole


38

Wie ändere ich das Verhalten der Bildschirmaustastung auf virtuellen Linux-Terminals?

Wenn ich beispielsweise von X zu einem VT wechsle, mich anmelde und das System ungefähr 5 Minuten lang in Ruhe lasse, wird der Bildschirm wie ein Bildschirmschoner leer. Es kommt mit jedem Tastendruck zurück, wie ein Bildschirmschoner.

Meistens möchte ich nur das Timeout ändern, aber ich interessiere mich auch für andere Einstellungen.

Wenn es hilft, läuft auf einem meiner Systeme Ubuntu 10.04 mit den Standardgrafiktreibern. fbsetzeigt die Konsole mit dem radeondrmfbFramebuffer-Gerät.


2
Hoffe, das hilft dir, ich fand das, als ich die gleiche Frage traf askubuntu.com/questions/138918/…

Antworten:


42

settermfrom @ whitequarks Antwort ist ein vernünftiges User-Space- Tool, aber es ist nicht die ganze Geschichte.

Das Standardverhalten beim Löschen der Konsole wird beim Kompilieren in den Kernel eingebunden. Es kann beim Booten mit dem Parameter consoleblank = oder im Userspace mit konfiguriert werden setterm. Aus der Kerneldokumentation ( 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.

Hier sind die Optionen, ihre Standardeinstellungen auf meinem Ubuntu-System und ihre Einflussbereiche:

  • setterm -blank [0-60]; meldet bei Abfragen immer 0; effektiv, wenn auf einem realen VT ausgeführt; betrifft alle echten TTYs; Nicht wirksam bei der Ausführung in Bildschirmsitzungen auf einem VT.
  • setterm -powerdown [0-60]; meldet immer "3]" (??); scheint keine Wirkung zu haben. Ubuntu-Kernel aktivieren APM_DISPLAY_BLANK nicht , und dies könnte zusammenhängen.
  • consoleblank=N; Der Standardwert ist 600 (10 Minuten). betrifft alle realen VTs; wirkt sich auf Bildschirmsitzungen in einem VT aus; keine möglichkeit zum einstellen beim laufen.

Meine Optionen zum Ändern der Standardeinstellung sind folgende:

  1. Fügen Sie setterm -blank Xeiner Shell-Init-Datei wie .bashrc (X in Minuten, 0 zum Deaktivieren) hinzu .
  2. In setterm -blank Xzu /etc/rc.local .
  3. Fügen Sie consoleblank=Yder Kernel-Befehlszeile (Y in Sekunden, 0 zum Deaktivieren) hinzu, indem Sie sie zu den Parameterlisten in / etc / default / grub hinzufügen , entweder GRUB_CMDLINE_LINUX oder GRUB_CMDLINE_LINUX_DEFAULT . (Vergiss das nicht update-grub.)

4
Ich möchte darauf hinweisen, dass setterm -blank Xdies in tmux nicht funktioniert hat , aber perfekt funktioniert hat , als ich tmux vor dem Ausführen des Befehls beendet habe.
Cody Hess

1
Wenn Sie grub2 als Bootloader verwenden, können Sie diesen Kernel-Parameter in / etc / default / grub hinzufügen GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=0"und dann Ihre grub-Konfiguration mit aktualisieren grub[2]-mkconfig -o /boot/grub/grub.cfg.
user3132194

3]denn es setterm -powerdownist nur die halbe Wahrheit: setterm -powerdown 3 | hexdump -ckehrt zurück 033 [ 1 4 ; 3 ]. Unsicher, was diese Fluchtsequenz interpretieren soll ...
Daniel Alder

1
Abhängig von Ihrer Distribution und dem Ort, an dem die Änderung wirksam werden soll, funktionieren einige dieser Optionen möglicherweise nicht. Ich fand, dass setterm in rc.local für RHEL 5 und 6, aber nicht für 7 funktioniert.
David C.

9

Versuchen Sie es setterm -blank $minutes(oder übergeben Sie 0, um es zu deaktivieren); -powersaveOption kann auch verwandt sein. settermhat auch viele andere nützliche Optionen.

Wenn Sie diese Attribute beim Systemstart festlegen möchten, sollten Sie ein Initskript schreiben. Dies ist nur ein Skript, das im /etc/init.dVerzeichnis abgelegt wird . Lass es heißen 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

Dann mach es ausführbar:

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

Und zum Schluss erstellen Sie die Symlinks /etc/rcX.d (nach Debian-Art):

# update-rc.d setterm defaults

(Wenn Sie dieses Verhalten satt haben, tun # update-rc.d -f setterm removeSie das. Beachten Sie, dass -fdies das erste Argument sein muss.)


hrm. scheint nützlich für on-the-fly, obwohl es auf meinem Test-Ubuntu-System tatsächlich die -powerdownEinstellung ist, die in Kraft ist. Was ist mit dem Festlegen eines systemweiten On-Boot-Standards? läuft setterm -blank Xoder setterm -powerdown Yin /etc/rc.local (oder ~ / .bashrc ) sinnvoll ?
Quack Quixote

1
Ja, aber nur wenn es rc.localtatsächlich funktioniert. (Letzte upstartMigration hat einiges vermasselt, da es anscheinend existiert und auf meinem System funktioniert.) Ansonsten sollten Sie ein Initscript erstellen. Das ist ganz einfach: In unserem Fall muss es alles initialisieren, wenn es startals erstes Argument übergeben wird, und nichts anderes tun. Ich werde das in meiner Antwort beschreiben.
Whitequark

Der Befehl setterm -blank X >/dev/ttyNscheint nicht zu funktionieren, daher glaube ich nicht, dass das Initscript-Konzept funktioniert. Ich bin auf einen Boottime-Parameter gestoßen und habe weitere Nachforschungen angestellt. ich scheine mich zu irren -powerdownund -powersave; habe nicht vollständig getestet, aber diese funktionieren nicht auf meinem System. setterm -blank XFunktioniert nur von einem echten VT aus und betrifft alle VTs. Daher ist es sinnvoll , einmal über /etc/rc.local zu arbeiten . (Upstart entfernt nicht rc.local , sondern nur das /etc/rcX.d-Zeug .)
Quacksalber 19.06.10

1
Hm. Scheint, dass settermEscape-Sequenzen auf stdout, aber überprüft TTY-Typ mit stdin: Ich habe gerade überprüft, und setterm ... >/dev/ttyN </dev/ttyNfunktioniert wie vorgesehen.
Whitequark

das ist sinnvoll und funktioniert (von einem echten TTY aus), aber wozu dient diese Syntax überhaupt? (1) funktioniert immer noch nicht über den Bildschirm (oder möglicherweise über andere PTYs). Hier wäre die Angabe von / dev / ttyN hilfreich. (2) Das Einstellen einer VT wirkt sich auf alle aus, sodass keine Initscript-Schleife erforderlich ist.
Quack Quijote

3

Wenn jemand nach einer anderen möglichen Lösung für Debian sucht (möglicherweise nicht Ubuntu):

In /etc/kbd/config, für eine Einstellung namens „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

Ändern Sie es auf 0, dies wird es deaktivieren:

BLANK_TIME=0

Getestet unter Debian 6 und 7.


2

Wenn Sie ein neueres Ubuntu verwenden, das Upstart verwendet, können Sie Folgendes verwenden:

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

Eine kleine Erklärung, was hier los ist:

Neuere Ubuntu-Versionen verwenden upstart für den Systemstart. Bei einem Neustart werden die Linux-Konsolen mit Konfigurationsdateien eingerichtet, die in / etc / init gespeichert sind. Der obige Befehl beginnt mit der Iteration über jede dieser Konfigurationsdateien:

for file in /etc/init/tty*.conf;

Der Name der Upstart-Konfigurationsdatei des tty in $ file wird verwendet, um den Namen des tty-Geräts zu erstellen:

tty="/dev/`basename $file .conf`";

Es wird ein Startbefehl "post-start" erstellt, der "setterm" ausführt, um die Bildschirmaustastung und das Energiesparen nach dem Start von tty zu deaktivieren:

echo "post-start exec setterm -blank 0 -powersave off >$tty <$tty"

Und zum Schluss wird dieser Befehl an die upstart-Konfigurationsdatei angehängt:

| sudo tee -a "$file";

2

Auf meinen Systemen (verschiedene Versionen von RedHat Enterprise Linux) habe ich festgestellt, dass unterschiedliche Ansätze erforderlich sind.

Für meine RHEL 5 und 6 Systeme kann ich die Linie hinzufügen

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

zu /etc/rc.local. Dadurch wird die Bildschirmaustastung der Konsole beim Systemstart deaktiviert.

Ich habe festgestellt, dass dies auf RHEL 7-Systemen nicht funktioniert. Unter RHEL7 wird beim Ausführen von setterm aus rc.local ein Fehler generiert:

setterm: $TERM is not defined.

Der Befehl funktioniert über eine interaktive Shell, in der $ TERM definiert ist (als linux). Wenn ich setterm zwinge, es zu benutzen:

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

Dann bekomme ich einen anderen Fehler:

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

Auch wenn derselbe Befehl in einer interaktiven Sitzung problemlos funktioniert. Das Setzen des consoleblankKernel-Parameters hat funktioniert.

Bearbeiten Sie auf RHEL7 den Parameter /etc/default/grubund hängen Sie ihn consoleblank=0an GRUB_CMDLINE_LINUX. Dann starten grub2-mkconfig -o /boot/grub2/grub.cfgund neu starten .

Ich habe nicht versucht, consoleblankRHEL5 oder 6 einzustellen.


2
RHEL7 verwendet systemd; rc.local ist standardmäßig nicht mit einem Terminal verbunden. Ich denke, Sie können hinzufügen </dev/tty1 >/dev/tty1oder etwas, damit es funktioniert
Quelle

1

Private CSI-Sequenzen für Linux Console

So stellen Sie die sleep mode/screensaverEingabezeit ein (wobei X eine Zeit in Minuten ist; 0 = nie):

(von der seriellen Konsole)

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

oder (von der Framebuffer-Konsole)

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

oder verwenden Sie zum Einstellen bei jedem Start /etc/inittab:

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

refs:


0

Das Hinzufügen gnome-screensaver-command --exitzu meiner .profileDatei hat dieses Problem für mich unter Debian Linux (Wheezy) behoben.

Ich dachte, ich würde dies hinzufügen, um anderen zu helfen, die sich die Haare ausreißen und versuchen, das Austasten des Bildschirms zu stoppen.

Ein Kontrollkästchen mit dem Titel "Bildschirm dimmen, um Strom zu sparen" funktioniert nicht richtig. Selbst wenn diese Option nicht markiert ist, wird der Bildschirm STILLSTANDS entsprechend der ausgewählten Inaktivitätszeit ausgeblendet.

UPDATE: Eigentlich musste ich sleep 30 && /usr/bin/gnome-screensaver-command --exit &dafür sorgen, dass es richtig funktioniert. Der GNOME-Bildschirmschoner scheint lange nach der Verarbeitung von .profile zu starten.


2
Hier geht es um das Ausblenden von Konsolenbildschirmen, nicht um Gnome-Bildschirmschoner.
basic6
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.