Jak mogę hibernować / zawiesić w wierszu poleceń i zrobić to w określonym czasie


36

Udało mi się dowiedzieć, jak zawiesić / hibernować system z wiersza poleceń, czytając Jak mogę zawiesić / hibernować z wiersza poleceń? .

Chciałbym jednak wiedzieć, jak używać wiersza polecenia do zawieszenia / hibernacji w danym momencie, w wartościach bezwzględnych (przykład 11 wieczorem) lub względnych (przykład 30 minut).

Wiem już, jak to zrobić przy wyłączaniu, ale jestem pewien, że polecenie jest podobne.

Odpowiedzi:


43

Możesz użyć atpolecenia, aby zaplanować dowolne działanie, w tym uruchomienie poleceń opisanych w tym pytaniu .

Na przykład, jeśli chcesz hibernować za 30 minut:

echo 'pmi action hibernate' | at now + 30 min

Lub jeśli chcesz zawiesić o godzinie 23:00:

echo 'pmi action suspend' | at 11pm

Jeśli chcesz uruchomić polecenie as root, uruchom atje sudozamiast z samym poleceniem sudo(ponieważ sudopowinno być uruchamiane tylko interaktywnie, chyba że skonfigurowano go tak, aby nie pytał o hasło). Na przykład, równoważniki wyżej poleceniach pm-hibernatei pm-suspendsą następujące:

echo pm-hibernate | sudo at now + 30 min

echo pm-suspend | sudo at 11pm


Dziękuję za wyłapanie tych dwóch sytuacji ... Zredagowałem tytuł, aby to odzwierciedlić. Zmodyfikowałem swoją odpowiedź, aby uwzględnić teraz obie sytuacje.
— cprofitt,

Masz pomysł, jak mogę usunąć zlecenia?
— KhoPhi,

2
@ Rexford atrmPolecenie usuwa zadania utworzone przez at.
— Eliah Kagan

9

Dla względnej specyfikacji (np. „Po 30 minutach”) możesz po prostu użyć sleeppolecenia, aby polecenie wstrzymania / hibernacji czekało.


Przykłady:

Poczekaj 30 minut, a następnie zawieś:

sudo sleep 30m; sudo pm-suspend

Poczekaj 1 godzinę, a następnie hibernuj:

sudo sleep 1h; sudo pm-hibernate

Też podoba mi się to podejście.
— KhoPhi,

2
Po 1h pm-hibernatechcę ponownie hasło do roota i zawieszenie nie nastąpi.
— Witalij Zdanevich,

co powiesz na zalogowanie się jako root, aby uniknąć pytania o hasło?
— banan3'14

4

Dla powtarzających się określonych czasów - jak na przykład wyłączanie komputerów to określona godzina każdego dnia. użyj crona.

crontab -e

dodaj następujące:

15 14 1 * * pmi action suspend

Jeśli chcesz to dostosować.

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

Na jeden raz powiedz nam polecenie

Na przykład, jeśli chcesz hibernować za 30 minut:

echo 'pmi action hibernate' | at now + 30 min

Lub jeśli chcesz zawiesić o godzinie 23:00:

echo 'pmi action suspend' | at 11pm

2
Używanie cronjest dobrym rozwiązaniem, gdy celem jest zawieszenie lub hibernacja o określonej porze dnia lub o określonej godzinie w określonym dniu tygodnia, miesiąca lub roku. Ale do zaplanowania pojedynczego zawieszenia lub hibernacji, które wydaje się być tym, o co Ederico pytał (i co jest o wiele bardziej sensowne, aby chcieć to zrobić), atnależy użyć polecenia. (Możesz zaplanować pojedyncze wydarzenie, cronsedawkat
— edytując

Nie pasuje do względnych warunków wymaganych przez pytanie, jest użyteczny tylko dla określonych harmonogramów.
— Bruno Pereira,

Tak, to był przykład „określonego czasu”, o który wnioskowano. „Chciałbym jednak wiedzieć, jak używać wiersza polecenia do zawieszenia / hibernacji w danym momencie, bezwzględnie (przykład 11
— wieczorem

1
Zredagowałeś swoją odpowiedź, aby dodać informacje o tym, jak korzystać at, ale dodane informacje są niestety nieprawidłowe. <Operator przekierowania tekst z pliku lub urządzenia podanej na jego prawo do standardowego wejścia dla polecenia podanego na jego lewej stronie. Jeśli chcesz użyć <zamiast |(jak w mojej odpowiedzi ), musisz utworzyć plik z pmi action suspend(lub pmi action hibernate) jako jego zawartością. Taka złożoność |poprawia się tutaj.
— Eliah Kagan,

Jako ogólną wskazówkę, jeśli masz catpolecenie po lewej stronie |(np. cat foo | bar), Możesz je zastąpić <wyrażeniem ( bar < foo). Ale kiedy masz echopolecenie po lewej stronie |, nie można go w prosty sposób zastąpić <wyrażeniem.
— Eliah Kagan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.