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. fbset
zeigt die Konsole mit dem Framebuffer-Gerät radeondrmfb
an.
setterm
von @ 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. Sie kann beim Booten mit dem Parameter consoleblank = oder im Benutzerbereich mit setterm
konfiguriert werden. 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 beim Laufen einzustellen.Meine Optionen zum Ändern der Standardeinstellung sind folgende:
setterm -blank X
(X in Minuten, 0 zum Deaktivieren) zu einer Shell-Init-Datei wie . Bashrc hinzu.setterm -blank X
zu /etc/rc.local hinzu.consoleblank=Y
(Y in Sekunden, 0 zum Deaktivieren) zur Kernel-Befehlszeile hinzu, indem Sie ihn entweder zu den Parameterlisten in /etc/default/grub hinzufügen GRUB_CMDLINE_LINUX oder GRUB_CMDLINE_LINUX_DEFAULT. (Vergessen Sie nicht, update-grub
.)Versuchen Sie es mit setterm -blank $minutes
(oder übergeben Sie 0 zum Deaktivieren). Die Option -powersave
kann auch verwandt sein. setterm
bietet noch eine Reihe weiterer nützlicher Optionen.
Wenn Sie diese Attribute beim Systemstart festlegen möchten, sollten Sie ein Initskript schreiben. Dies ist nur ein Skript, das sich im Verzeichnis /etc/init.d
befindet. Lass es setterm
heißen:
#!/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, führen Sie # update-rc.d -f setterm remove
aus. Beachten Sie, dass -f
das erste Argument sein muss.).
Wenn jemand nach einer anderen möglichen Lösung für Debian sucht (möglicherweise nicht Ubuntu):
Suchen Sie in /etc/kbd/config
nach einer Einstellung mit dem Namen "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.
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";
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 von rc.local ein Fehler generiert:
setterm: $TERM is not defined.
Der Befehl funktioniert von einer interaktiven Shell aus, 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 Kernelparameters consoleblank
hat funktioniert.
Bearbeiten Sie auf RHEL7 /etc/default/grub
und hängen Sie consoleblank=0
an den Parameter GRUB_CMDLINE_LINUX
an. Führen Sie dann grub2-mkconfig -o /boot/grub2/grub.cfg
aus und starten Sie neu.
Ich habe nicht versucht, consoleblank
auf RHEL5 oder 6 einzustellen.
So stellen Sie die sleep mode/screensaver
-Eingabezeit 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 /etc/inittab
, um es bei jedem Start festzulegen:
tty1::sysinit:echo -e '\033[9;X]'
refs:
Das Hinzufügen von gnome-screensaver-command --exit
zu meiner .profile
-Datei 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 STILLSCHWEIGEND entsprechend der ausgewählten Inaktivitätszeit ausgeblendet.
UPDATE: Ich brauchte eigentlich sleep 30 && /usr/bin/gnome-screensaver-command --exit &
, damit es richtig funktioniert. Der GNOME-Bildschirmschoner scheint lange nach der Verarbeitung von .profile zu starten.