Wyłącz monitor za pomocą wiersza polecenia

59

Używam Ubuntu Server na moim laptopie. Naprawdę nie ma powodu, aby ekran był włączony. Próbowałem użyć tego polecenia, aby wyłączyć ekran:

sleep 1 && xset dpms force off

Problem polega na tym, że pojawia się następujący błąd

unable to open display "".

Masz pojęcie, co się dzieje / co jest nie tak? Wszelkie inne sugestie, jak to zrobić?

Wściekły ptak
źródło
Czy masz zainstalowany serwer X? I działa?
enzotib
@enzotib Wierzę, że jest zainstalowany. Jeśli chodzi o działanie, nie jestem pewien. Jak mogę to sprawdzić?
AngryBird
1
Spróbuj uruchomić najpierw:export DISPLAY=:0.0
RobinJ,
Niezerowe wyjście dpkg -l | grep xserver-xorgdo zainstalowania. Uruchomione wyjście o wartości innej niż null pgrep -fl X. Nawiasem mówiąc, jeśli działasz, powinieneś być w sesji graficznej.
enzotib
1
@ WarriorIng64: to laptop
enzotib,

Odpowiedzi:

59

Aby wyłączyć monitor w konsoli, polecenie jest następujące:

sudo vbetool dpms off

Sugeruję, aby odzyskać kontrolę nad konsolą po naciśnięciu klawisza Enter

sudo sh -c 'vbetool dpms off; read ans; vbetool dpms on'
enzotib
źródło
2
Prawdopodobnie zechcesz alias tego miejsca do czegoś przydatnego.
Danny Staple
1
vbetool jest dostępny przezsudo apt-get install vbetool
David Clarke
1
W moim przypadku to polecenie naprawdę okazało wyświetlanie off, a nie w xsetjednym
golimar
O dziwo, polecenie wyłącza 2 z 3 wyświetlaczy, trzeci pozostaje biały przez chwilę, zanim komputer sam się zrestartuje, jeśli polecenie zostało wykonane przez ssh.
danba,
@enzotib, kliknąłem przypadkowo, aby zagłosować, przepraszam. Zmodyfikuj nieco odpowiedź na to, że mogę usunąć głosowanie negatywne.
andras.tim
32

Wypróbuj te polecenia ...

Wyłączyć:

xset -display :0.0 dpms force off 

Włączyć:

xset -display :0.0 dpms force on 

Jeśli wyświetlacz wyłączy się, a następnie natychmiast ponownie włączy, spróbuj wykonać następujące czynności, które dodają opóźnienie o 1 sekundę przed wyłączeniem ekranu. Daje to szansę na przetworzenie wszystkich zdarzeń przez serwer X przed wyłączeniem wyświetlacza.

sleep 1 && xset -display :0.0 dpms force off 
Glauber Cardoso
źródło
Skąd mam wiedzieć, który ekran jest
Karl Morrison
1
Poniższe działało dla mnie (również częściowo zainspirowane odpowiedzią @ enzotib ):xset -display $DISPLAY dpms force off; read temp; xset -display $DISPLAY dpms force on
stiemannkj1
Uważaj na to. Po wydaniu nie mogę ponownie włączyć monitora na maszynie testowejforce off
Zmart
2
Aktualizacja: wyciągnięcie i ponowne podłączenie wszystkich kabli (w tym zasilania) na monitorze naprawiło sytuację.
Zmart
27

xsetKomenda wspomniano w innych odpowiedzi wyłączy wszystkie monitory Jeśli masz wiele konfiguracji monitora. Jeśli jednak chcesz wyłączyć tylko jeden lub kilka monitorów, których powinieneś użyć xrandr.

Najpierw uruchom xrandr -qpolecenie, które wyświetli listę wszystkich monitorów i ich bieżące ustawienia wyświetlania. Na początku każdego szczegółu monitora znajdziesz nazwę monitora ustawioną przez system. Musisz to śledzić.

Mam dwa monitory (jeden jest podłączony do portu DVI, a drugi do portu VGA), a po uruchomieniu polecenia widzę to:

Screen 0: minimum 320 x 200, current 1360 x 768, maximum 2726 x 2726
DFP1 connected 1360x768+0+0 (normal left inverted right x axis y axis) 304mm x 228mm
   1360x768       59.7*+
   ... (more details are shown here, but I have hidden it)

CRT1 connected 1360x768+0+0 (normal left inverted right x axis y axis) 410mm x 230mm
   1360x768       59.8*+   60.0  
   ... (more details are shown here, but I have hidden it)

Na tym wyjściu monitor podłączony do portu DVI jest oznaczony jako, DFP1a drugi jako CRT1. Więc jeśli chcę wyłączyć monitor dodatkowy (tj. CRT1), Uruchomiłem to polecenie:

xrandr --output CRT1 --off

jeśli chcesz ponownie włączyć monitor, uruchom następującą komendę:

xrandr --output CRT1 --auto
Harshith JV
źródło
Mam 3 monitory, 1 VGA, 1 DVI i 1 HDMI. Kiedy uruchomiłem: xrandr --output VGA1 - auto, włączyło VGA, ale sklonowało monitor DVI.
ThiagoPonte,
Hmm dziwne. Spróbuj --on zamiast --auto
Harshith JV
@ HarshithJ.V. to dobra odpowiedź! Jest lepszy niż xsetponieważ xset włącza się po naciśnięciu touchpada itp. Btw mam nadzieję, że pamiętasz mnie z poprzedniej firmy :-)
Nishant,
@Nishant Dzięki za komplementy. O dziwo, nie pamiętam cię. Proszę pingować mnie w innych mediach społecznościowych, ponieważ nie możemy rozmawiać, ponieważ jest to niezgodne z zasadami.
Harshith JV
Jeśli wystąpił błąd crtc, wpisz „chvt 7” przed poleceniem xrandr, aby odczytał „chvt 7 && xrandr -d: 0 --output eDP1 --auto”
haytham-med haytham
11

Właśnie zainstalowałem Ubuntu Server 18.04.1 (bez GUI, X, ani niczego graficznego), a po zerwaniu się zeszłej nocy, próbując wyłączyć ekran, w końcu znalazłem magiczne polecenie:

setterm --blank 1

Po wykonaniu polecenia ekran wyłącza się automatycznie co minutę (jeśli jest bezczynny).


Co więcej, jeśli chcesz, aby polecenie było wykonywane automatycznie podczas rozruchu, możesz dodać je do wiersza poleceń GRUB , aby to zrobić, musimy edytować następny plik:

sudo nano /etc/default/grub

Gdy już tam znajdziesz, po prostu dodaj consoleblank=60do GRUB_CMDLINE_DEFAULT, powinno to wyglądać tak:

GRUB_CMDLINE_LINUX_DEFAULT="quiet consoleblank=60"

Następnie zamknij plik i zapisz go, a następnie po prostu uruchom sudo update-grubi voila , za każdym razem, gdy uruchomisz, ekran wyłączy się automatycznie co 60 sekund. (ponownie, jeśli bezczynny).

I w ten sposób (dodanie Consoleblank do GRUB) działa nawet ze zdalnych terminali (ssh).

Cieszyć się! (jeszcze raz)

Boy Graffity
źródło
1
Wykonując powyższe polecenie, otrzymuję: „setterm: terminal xterm-256color nie obsługuje --blank”. Co może być nie tak?
zx485,
1
Próbujesz ze zdalnej sesji?
Boy Graffity,
@ zx485 Sprawdź zaktualizowaną odpowiedź, teraz możesz wyłączyć ekran z sesji zdalnej. Jestem pewien, że to rozwiąże twój problem
Boy Graffity
6

Jeśli masz wiele monitorów, użyj tego:

Wyłączanie drugiego monitora:
(Zakładając, że CRT-0 jest lewym monitorem, a CRT-1 jest prawym monitorem)
xrandr --output CRT-1 --off
Włączanie drugiego monitora: W
xrandr --output CRT-1 --right-of CRT-0 --auto
ten sposób xrandr nie powiela pierwszego ekranu.

Darksworm
źródło
Testowałem to, wyłączenie ekranu w ten sposób przypomina raczej jego wyłączenie, np. Ekran jest nadal włączony. Po prostu nie jest używany. Nie --offmożna ponownie włączyć ekranu za pomocą przycisku zasilania ekranu (ponieważ nadal jest włączony / nigdy nie był wyłączony). Pomieszało się to również z moimi ustawieniami wyświetlania pulpitu (od rozszerzonego pulpitu do wyświetlaczy lustrzanych). Jeśli zrobiono to, aby wyłączyć oba wyświetlacze, nie jestem pewien, czy łatwo byłoby je ponownie włączyć bez zalogowania się do TTY i wyczyszczenia pliku monitors.xml gdziekolwiek się znajduje. Im więcej wiesz.
ThorSummoner,
0

Miałem ten sam problem. Odkryłem, że na moim laptopie (stary Acer Aspire) domyślny przycisk screentoggle jest obsługiwany. To może być coś takiego fn+F6.

To rozwiązanie prawdopodobnie nie działało już za dnia. Mam nadzieję, że pomoże to każdemu, kto napotka ten problem.

DutchJelly
źródło