Jak mogę zawiesić / hibernować z wiersza poleceń?

Odpowiedzi:

312

Tradycyjnie ubuntu wspierało dość tępą metodę zawieszenia i hibernacji. Żaden z nich nie integrowałby się dobrze z innymi aplikacjami i czasami nawet nie działał na niektórych komputerach. Nowa metoda nie wymaga rootowania i powiadamia wszystkie aplikacje nasłuchujące zdarzeń zasilania.

Metoda systemowa

Począwszy od Ubuntu 16.04, systemctlnależy użyć wywołania (patrz Polecenie zawieszenia w Ubuntu 16.04 )

systemctl suspend

i

systemctl hibernate

Nowa metoda

Zobacz odpowiedź tutaj na tej stronie Adama Paetznicka dotyczącą korzystania z dbus . Idealnie byłoby stworzyć ~/bin/suspendskrót / skrypt, który ułatwi korzystanie z tej akcji.

Aby korzystać z ssh, powinieneś zmodyfikować reguły zestawu zasad zgodnie z opisem Petera V. Mørcha

Stara metoda

Zgodnie z forum Ubuntu możesz użyć następujących poleceń:

pmi action suspend

i

pmi action hibernate

Wymaga to zainstalowania pakietu powermanagement-interface (nie przetestowano).

sudo apt-get install powermanagement-interface

Znalazłem też polecenia sudo pm-suspendi sudo pm-hibernatedo pracy na moim netbooku.

txwikinger
źródło
21
pm-suspend i pm-hibernacja działa dla mnie i jest łatwe. Wymaga sudo, ale to OK. (Znalazłem wcześniej pomysł na PMI, ale instalacja pakietu do zawieszenia jest bardzo zła ...)
user1034
1
Pamiętaj, że musisz apt-get install powermanagement-interfaceuruchomić pmi.
nealmcb
1
Tylko 11.10 działa tylko pm- *, także z dodanym interfejsem powermanagament
Omegafil
1
nie działa z moim Ubuntu 12.10. poapt-get install powermanagement-interface
coś
1
nowa metoda jest teraz zepsuta, patrz unix.stackexchange.com/questions/153099/…
ijk
188

Sposobem przyjaznym dla gnomów jest użycie dbus.

dbus-send --system --print-reply \
    --dest="org.freedesktop.UPower" \
    /org/freedesktop/UPower \
    org.freedesktop.UPower.Suspend

Są dwie zalety tego polecenia pm-suspend.

  1. Spowoduje to zablokowanie ekranu (po wznowieniu), jeśli masz tę opcję wybraną w gnome.

  2. Nie wymaga uprawnień roota, więc łatwo jest na przykład dodać go jako skrót klawiaturowy.

Jak wspomniano w komentarzach, wymiana Suspendw ostatnim wierszu w celu Hibernateutworzenia polecenia hibernacji:

dbus-send --system --print-reply \
    --dest="org.freedesktop.UPower" \
    /org/freedesktop/UPower \
    org.freedesktop.UPower.Hibernate

Jeśli nastąpi hibernacja, Error org.freedesktop.UPower.GeneralError: not authorizedużytkownik może nie uzyskać hibernacji. Edytuj lub utwórz, /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pklaaby zawierał następującą sekcję: (źródło)

[Re-enable hibernate by default]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

Zostało to przetestowane na UbuntuGnome 14.04 .

Uwaga: Jest to w zasadzie to samo co odpowiedź qbi, ale zaktualizowane do pracy z nowszymi wersjami Ubuntu, a także z hibernacją.

Adam Paetznick
źródło
15
Twoja odpowiedź naprawdę powinna być pierwsza. Jest to inny niż root sposób instalowania gnome bez instalowania pakietów. Lubić!
turbo
11
Możesz Hibernatepo prostu zamienić ostatnią linię naorg.freedesktop.UPower.Hibernate
Sheharyar,
2
na moim 13.10 to działa. ekran nie jest jednak blokowany po wznowieniu, mimo że w „Zabezpieczeniach i prywatności” aktywowane jest „Wymagaj mojego hasła po wybudzeniu z trybu wstrzymania” .
andreas-h
3
Nie działało dla mnie (Gnome 3.12, Ubuntu 14.04). Wygląda na to, że interfejs [UPower.Suspend] został usunięty, zgodnie z bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/…
Gui Ambros
4
Interfejs zawieszenia został przeniesiony do logind; askubuntu.com/questions/652978
Khurshid Alam
58

język angielski

Jeśli chcesz, aby komputer zawiesił się w ciągu godziny, ponieważ chcesz iść spać i słuchać ulubionej stacji radiowej, otwórz terminal i wpisz:

sudo bash -c "sleep 1h; pm-suspend"

a twój komputer zaśnie za 1 godzinę. Po przebudzeniu zachowasz otwarte zdjęcia i wszystkie inne rzeczy.

Możesz zastąpić 1hto, co chcesz: hgodzinami, mminutami, ssekundami, ddniami.

Dobranoc!

Français

Si vous voulez juste que votre ordinateur se mette en veille dans uure heure parce que vous voulez vous endormir en ecoutant votre radio preférée, ouvrez Terminal et tapez:

sudo bash -c "sleep 1h; pm-suspend"

et votre ordinateur s'endormira dans une heure. Quand vous vous réveillerez, aura conservé en mémoire vos apps ouvertes.

Vous pouvez remplacer 1hpar ce que vous voulez: hwlać heures, mwlać kilka minut, swlać sekundę, dwlać jutro.

Bonne nuit!

Español

Sie quieres suspender tu computadora en una hora porque quieres ir dormir escuchando tu estación de radio favourita, tan solo abre el terminal y escribe:

sudo bash -c "sleep 1h; pm-suspend"

y tu computadora se quedará dormida pl 1 hora. Cuando despiertes, allí habrán quedado abiertas tus imágenes y todas tus cosas.

Puedes reemplazar 1hpor lo que desees: hpara horas , mpara minutos, spara segundos, dpara días.

¡Buenas noches!

greg
źródło
Oto mój przypadek użycia, którego szukam! AFIK pm- * można uruchomić bez uprawnień administratora
ruX
31

Dla Ubuntu 12.04 LTS i Ubuntu 13.04

Aby uzyskać hibernację:

sudo pm-hibernate

Aby uzyskać Zawieszenie:

sudo pm-suspend
rɑːdʒɑ
źródło
„sudo pm-suspend” nie działa na koledze mięty 13 :(
rsjethani,
Tak, myślę, że ten pakiet nie został zainstalowany. poszukaj tych pakietów w synaptic.
rɑːdʒɑ
2
Wadą tej metody jest to, że jeśli używasz GUI, pm-suspend NIE zablokuje twojej sesji, co może być niepewne.
Raúl Salinas-Monteagudo
1
Działa również na Ubuntu 15.10.
Searene
1
działa na 14,04
lts
22

Możesz użyć do tego pliku /sys/power/state. Najpierw dowiedz się, jakie stany są obsługiwane:

user@linux:_> cat /sys/power/state
standby mem disk

root@linux:~> echo -n mem > /sys/power/state  # suspend to ram
root@linux:~> echo -n disk > /sys/power/state  # suspend to disk

lub przez dbus:

# Zawieś dbus-send --session --dest = org.gnome.PowerManager \ --type = method_call --print-reply --reply-timeout = 2000 \ / org / gnome / PowerManager org.gnome.PowerManager.Suspend # Hibernacja dbus-send --session --dest = org.gnome.PowerManager \ --type = method_call --print-reply --reply-timeout = 2000 \ / org / gnome / PowerManager org.gnome.PowerManager.Hibernate

Zgodnie z tym wpisem w starterze powyższy interfejs został usunięty. Więc nie będzie już działać w Ubuntu.

qbi
źródło
Pierwszy pomysł daje mi: „bash: echo: błąd zapisu: niepoprawny argument” Pomysł Dbus daje wynik: „Błąd org.freedesktop.DBus.Error.UnknownMethod: Metoda„ Zawieś ”z podpisem„ ”na interfejsie” org.gnome.PowerManager ” nie istnieje ”
użytkownik1034,
Do wszystkiego dodałem małe wyjaśnienie /sys/power/state. Ponadto metoda dbus została usunięta z Ubuntu, więc nie będzie już działać.
qbi
$ sudo echo -n mem > /sys/power/state-bash: /sys/power/state: Permission denied
Hubro
3
To działa świetnie. Dla osób mających problemy z tą metodą podczas korzystania z sudo, w twojej bieżącej powłoce działa „potok do pliku”, zwany także „>”, więc nie otrzymuje uprawnień superużytkownika, podczas gdy twoje echo. sudo -iNajpierw musisz użyć fajki sudo tee:echo mem | sudo tee /sys/power/state
RandomInsano
12

Aby zamknąć system (14.04) z wiersza poleceń (lub skrótu klawiaturowego) użyj:

dbus-send --system --print-reply --dest="org.freedesktop.login1" /org/freedesktop/login1 org.freedesktop.login1.Manager.PowerOff boolean:true

Dowiedziałem się tego, grając z gdbus, który może wyświetlić listę dostępnych interfejsów:

Aby wyświetlić listę usług dostępnych w autobusie:

dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames

Aby znaleźć metody:

gdbus introspect --system --dest org.freedesktop.login1 --object-path /org/freedesktop/login1 --recurse
simonltwick
źródło
12

ponieważ 15.04 systemD jest standardowym systemem inicjującym, dlatego dostępne jest nowe polecenie:

systemctl suspend
k1l
źródło
Używam Xubuntu 15.04. Polecenie systemctl suspendpowoduje zawieszenie komputera, ale nie powoduje zablokowania ekranu, mimo że zaznaczyłem pole wyboru „Blokuj ekran, gdy system przechodzi w tryb uśpienia” w Ustawieniach -> Menedżer zasilania -> Bezpieczeństwo. Czy ktoś ma pojęcie dlaczego?
Teemu Leisti
Uaktualniłem do Xubuntu 16.04. Polecenie systemctl suspendnadal zawiesza komputer. Teraz powoduje to również zablokowanie ekranu, tylko wtedy, gdy pole wyboru „Blokuj ekran, gdy system przechodzi w tryb uśpienia” w Ustawieniach -> Menedżer zasilania -> Bezpieczeństwo jest zaznaczone.
Teemu Leisti
8

Odpowiedź Adama Paetznicka dbus-send nie działała tak, jak rzekomo dla mnie świadome; maszyna obudziła się odblokowana, mimo że gnome-power-manager jest ustawiony na blokowanie ekranu podczas budzenia. Chcę, aby ekran był zablokowany podczas budzenia i stwierdził, że:

$ gnome-screensaver-command --lock && pmi action hibernate

Wyobrażam sobie, że to nie zależy od konfiguracji gnoma, ale tego nie testowałem.

Aryeh Leib Taurog
źródło
Miły. Lub xscreensaver-command --lockw zależności od przypadku.
phyzome
3

Nowy interfejs

… Który działa w wersji 15.10 Wily, a być może utopiczny i żywy.

dbus-send --print-reply --system                         \
    --dest=org.freedesktop.login1                        \
    /org/freedesktop/login1                              \
    org.freedesktop.login1.Manager.Suspend boolean:true

Na szczęście nie wymaga sudo, w przeciwieństwie do pm-suspendpolecenia.

Gringo Suave
źródło
Mój XPS 13 9350 z Debian / Gnome miał problemy z zawieszaniem / hibernacją podczas zamykania pokrywy. Po uruchomieniu tego polecenia (i odpowiednika dla hibernacji) pomyślnie przeszedł w tryb zawieszenia (i hibernacji), a teraz zamyka i otwiera pokrywę zgodnie z oczekiwaniami!
Victor Schröder,
1

Oto jak wprowadzić zdalną maszynę w tryb gotowości przez ssh:

ssh -t 192.168.1.4 'sudo nohup &> / dev / null bash -c "(sleep 1; echo -n mem> / sys / power / state) &"
[email protected] hasło: 
[sudo] hasło dla x: 
Połączenie z 192.168.1.4 zostało zamknięte.

/ sys / power / state działa w systemie Ubuntu 13.10. pmi podaje błąd Dbus.

użytkownik229115
źródło
0

Osobiście eksperymentowałem z metodą pmi. Jednakże, gdy próbowałem to dostałem komunikat o błędzie: Error org.freedesktop.DBus.Error.Spawn.ChildExited: Launch helper exited with unknown return code 1. Istnieje jednak obejście w trzecim komentarzu do tego raportu o błędzie , który wydaje się, że zadziałał dla mnie (używam Ubuntu 13.03).

TSJNachos117
źródło
Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
fossfreedom
0

Aktualizacja dla tych, którzy podobnie jak ja nadal pracują na systemach KDE / Ubuntu 14.04. Aby zablokować użycie qdbusi zawiesić korzystanie dbus. Pełna komenda:

qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock && dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

Aby hibernować, tzn. Zawiesić dysk twardy zamiast pamięci RAM, zamień „Wstrzymaj” na końcu polecenia na „Hibernuj”.

Aby tylko zablokować ekran bez zawieszania, xscreensaver-command -lockzadziała, JEŚLI wpiszesz tylko 1 łącznik dla opcji „-lock” i tylko jeśli wygaszacz ekranu jest uruchomiony. Właściwie niezbyt przydatne polecenie. Używanie i3lockjest łatwiejsze, ale wtedy nie pojawi się schludne okno dialogowe logowania, aby wrócić do pracy, tak jak podczas korzystania qdbus.

LinuxRev
źródło
0

Poniższe działa dla mnie 16.04 (z komputerem Gnome):

gnome-screensaver-command --lock && compsleep

Zainstalowałem go również jako niestandardowy skrót klawiaturowy z panelu ustawień Gnome jako klawisze „Shift-Super-X”.

Christopherbalz
źródło