Ändern Sie das Austastverhalten der Linux-Konsole auf dem Bildschirm

53673
quack quixote

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

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

Meistens möchte ich nur das Timeout ändern, aber mich interessieren auch andere Einstellungen.

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

35
Ich hoffe, das hilft Ihnen, ich habe dies gefunden, als ich dieselbe Frage traf: http://askubuntu.com/questions/138918/how-do-i-disable-the-blank-console-screensaver-on-ubuntu-server vor 12 Jahren 2

7 Antworten auf die Frage

37
quack quixote

settermDie Antwort von @ whitequark ist ein vernünftiges Userspace-Tool, aber es ist nicht die ganze Geschichte.

Das standardmäßige Konsolen-Ausblendverhalten wird zur Kompilierzeit in den Kernel eingebettet. Es kann beim Booten mit dem Parameter consoleblank = oder im Benutzerraum mit konfiguriert werdensetterm . Aus der Kernel-Dokumentation ( 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 in meinem Ubuntu-System und ihre Einflussbereiche:

  • setterm -blank [0-60]; meldet immer 0, wenn abgefragt wird; wirksam, wenn auf einem echten VT ausgeführt; betrifft alle echten TTYs; nicht wirksam, wenn in Bildschirmsitzungen auf einem VT ausgeführt wird.
  • 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; Standardeinstellung ist 600 (10 Minuten); betrifft alle echten VTs; wirkt sich auf Bildschirmsitzungen in einem VT aus; keine Einstellung während des Laufens.

Meine Optionen zum Ändern des Standardwerts sind also eine der folgenden:

  1. Hinzufügen setterm -blank X(X in Minuten, 0 zum Deaktivieren) zu einer Shell-Init-Datei wie .bashrc .
  2. Fügen Sie setterm -blank Xzu /etc/rc.local hinzu .
  3. Fügen Sie consoleblank=Yder Kernel-Befehlszeile (Y in Sekunden, 0 zum Deaktivieren) hinzu, indem Sie sie den Parameterlisten in / etc / default / grub hinzufügen, entweder GRUB_CMDLINE_LINUX oder GRUB_CMDLINE_LINUX_DEFAULT . (Vergiss es nicht update-grub.)
Ich möchte anmerken, dass `setterm -blank X` aus _tmux_ für mich nicht funktioniert hat, aber perfekt funktioniert hat, als ich _tmux_ beendet habe, bevor ich den Befehl ausgeführt habe. Cody Hess vor 10 Jahren 2
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 `grub [2] -mkconfig -o / boot / aktualisieren. grub / grub.cfg`. user3132194 vor 10 Jahren 1
`3]` für `setterm -powerdown` ist nur die halbe Wahrheit:` setterm -powerdown 3 | hexdump -c` gibt '033 [1 4; 3]. Unsicher, was diese Fluchtsequenz interpretieren soll ... Daniel Alder vor 9 Jahren 0
Abhängig von Ihrer Distribution und dem Ort, an dem die Änderung wirksam werden soll, funktionieren einige dieser Optionen möglicherweise nicht. Ich fand das Setterm in rc.local gut für RHEL 5 und 6, aber nicht für 7. David C. vor 8 Jahren 1
9
whitequark

Try setterm -blank $minutes (or pass 0 to disable); -powersave option may also be related. setterm has a plenty of other useful options, too.

If you want to set these attributes on system startup, consider writing an initscript. This is just a script placed in /etc/init.d directory. Let it be called 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 

Then make it executable:

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

And finally, create the /etc/rcX.d symlinks (the Debian way):

# update-rc.d setterm defaults 

(If you'll get tired of that behavior, do # update-rc.d -f setterm remove. Note that -f must be the first argument).

hrm. scheint für on-the-fly nützlich zu sein, obwohl es auf meinem Ubuntu-Test-System so aussieht, als wäre es die `-powerdown`-Einstellung, die wirksam ist. Wie wäre es, einen systemweiten Standard beim Start festzulegen? läuft `setterm -blank X` oder` setterm -powerdown Y` in * / etc / rc.local * (oder * ~ / .bashrc *) angemessen? quack quixote vor 14 Jahren 0
Ja, aber nur, wenn `rc.local` tatsächlich funktioniert. (Die kürzlich durchgeführte 'upstart'-Migration hat einige Dinge durcheinandergebracht, da sie anscheinend auf meinem System vorhanden ist und funktioniert.) Andernfalls sollten Sie ein Initscript erstellen. Das ist einfach: In unserem Fall muss alles initialisiert werden, wenn "start" als erstes Argument übergeben wird, und nichts anderes tun. Ich werde das in meiner Antwort beschreiben. whitequark vor 14 Jahren 1
Der Befehl `setterm -blank X> / dev / ttyN` scheint nicht zu funktionieren, daher glaube ich nicht, dass das Initscript-Konzept funktionieren wird. stieß auf einen Boottime-Parameter tho und recherchierte weiter. Ich scheine falsch über "-powerdown" und "-powersave" zu sein. nicht vollständig getestet, aber die funktionieren nicht auf meinem System. `setterm -blank X` funktioniert nur von einem echten VT und betrifft alle VTs. Ein einmaliges Ausführen über * / etc / rc.local * ist daher sinnvoll. (Upstart nimmt * rc.local * nicht weg, nur die * / etc / rcX.d *). quack quixote vor 14 Jahren 0
Hm. Scheint, dass `setterm` Escape-Sequenzen auf` stdout` ausstrahlt, aber TTY-Typ mit `stdin` überprüft: Ich habe es gerade überprüft und` setterm ...> / dev / ttyN whitequark vor 14 Jahren 1
das macht Sinn und funktioniert (von einem echten TTY), aber was ist der Sinn dieser Syntax überhaupt? (1) funktioniert immer noch nicht innerhalb von * screen * (oder möglicherweise von anderen PTYs). In diesem Fall wäre die Angabe von / dev / ttyN nützlich. (2) Die Einstellung eines VTs wirkt sich auf alle aus, sodass keine Initscript-Schleife erforderlich ist. quack quixote vor 14 Jahren 0
Sehr seltsam: Ich habe diesen Befehl in einer SSH-Sitzung getestet (es ist sowieso keine Tastatur an den Server angeschlossen). upd: wahrscheinlich, weil ich dort ein Debian-System habe. Normalerweise unterscheiden sich Ubuntu und Debian nicht viel, aber das ist offensichtlich der Fall. whitequark vor 14 Jahren 0
2
Chris Pick

If you are running a newer Ubuntu that uses upstart, you can use:

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 

A little explanation of what's going on here:

Newer Ubuntu versions use upstart for system startup. With upstart, the Linux consoles are setup with config files stored within /etc/init. The command above starts by iterating over each of those config files:

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

The tty's upstart config file name in $file is used to build the name of the tty device:

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

An upstart "post-start" command is built that runs "setterm" to disable screen blanking and power saving after the tty has been started:

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

And finally that command is appended to the upstart config file:

| sudo tee -a "$file"; 
2
basic6

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 

Ändere es auf 0, dies wird es deaktivieren:

BLANK_TIME=0 

Getestet unter Debian 6 und 7.

1
David C.

Auf meinen Systemen (verschiedenen 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 Zeile hinzufügen

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

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

Ich habe festgestellt, dass dies auf RHEL 7-Systemen nicht funktioniert. Auf RHEL7 führt die Ausführung von setterm von rc.local zur Generierung eines Fehlers:

setterm: $TERM is not defined.

Der Befehl funktioniert von einer interaktiven Shell aus, in der $ TERM definiert ist (als linux). Wenn ich setterm dazu 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 gut funktioniert. Das Einstellen des consoleblankKernel-Parameters hat funktioniert.

Bearbeiten Sie den Parameter unter RHEL7 /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.

RHEL7 verwendet systemd; rc.local ist standardmäßig nicht mit einem Terminal verbunden. Ich denke, Sie können `/ dev / tty1` oder etwas hinzufügen, damit es funktioniert sourcejedi vor 6 Jahren 0
0
mcchinsy

Durch gnome-screensaver-command --exitdas Hinzufügen zu meiner .profileDatei wurde dieses Problem für Debian Linux (Wheezy) behoben.

Ich dachte, ich würde dies hinzufügen, um anderen zu helfen, die versuchen, die Bildschirmausblendung zu stoppen.

Ein Kontrollkästchen mit dem Titel "Dimmen des Bildschirms, um Strom zu sparen" funktioniert nicht richtig. Auch wenn dies nicht aktiviert ist, wird der Bildschirm STILL STANDARD entsprechend der ausgewählten Inaktivitätszeit deaktiviert.

UPDATE: Eigentlich musste sleep 30 && /usr/bin/gnome-screensaver-command --exit &ich es richtig machen. Der GNOME-Bildschirmschoner scheint lange nach der Verarbeitung von .profile zu starten.

Hier geht es um das Ausblenden von Konsolenbildschirmen, nicht um Gnome-Bildschirmschoner. basic6 vor 9 Jahren 1
0
yurenchen

Private CSI-Sequenzen der Linux-Konsole

Eingabezeit einstellen sleep mode/screensaver(wobei X eine Zeit in Minuten ist; 0 = nie):

(von der seriellen Konsole)

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

oder (von Framebuffer Console)

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

oder um es bei jedem Start festzulegen, verwenden Sie /etc/inittab:

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

refs: