Wie kann ich über die Befehlszeile in den Ruhezustand versetzt werden, und zwar zu einem bestimmten Zeitpunkt?

36

Es ist mir gelungen herauszufinden, wie ich das System von der Befehlszeile aus anhalten / in den Ruhezustand versetzen kann. Lesen Sie hierzu Wie kann ich von der Befehlszeile aus anhalten / in den Ruhezustand versetzt werden? .

Ich möchte jedoch wissen, wie die Befehlszeile verwendet wird, um den Ruhezustand zu einem bestimmten Zeitpunkt in absoluten (Beispiel: 23:00 Uhr) oder relativen (Beispiel: 30 Minuten) Ausdrücken aufzuheben.

Ich weiß bereits, wie man das mit shutdown macht, aber ich bin mir sicher, ob der Befehl ähnlich ist.

Ederico
quelle

Antworten:

43

Mit dem atBefehl können Sie alle Aktionen planen, einschließlich der in dieser Frage beschriebenen Befehle .

Wenn Sie beispielsweise in 30 Minuten in den Ruhezustand wechseln möchten:

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

Oder wenn Sie um 23:00 Uhr pausieren möchten:

echo 'pmi action suspend' | at 11pm

Wenn Sie einen Befehl rootausführen müssen, führen Sie ihn atmit sudound nicht mit dem Befehl selbst aus sudo(da er sudonur interaktiv ausgeführt werden sollte, es sei denn, Sie haben ihn so konfiguriert, dass Sie nicht nach Ihrem Kennwort gefragt werden). Die Entsprechungen der obigen Befehle, die pm-hibernateund verwenden, pm-suspendlauten beispielsweise:

echo pm-hibernate | sudo at now + 30 min

echo pm-suspend | sudo at 11pm

Eliah Kagan
quelle
Vielen Dank für den Hinweis, dass beide Situationen gewünscht wurden ... Ich habe den Titel bearbeitet, um dies auch wiederzugeben. Ich habe meine Antwort so geändert, dass jetzt beide Situationen berücksichtigt werden.
cprofitt
Irgendeine Idee, wie ich die Jobs löschen kann?
KhoPhi
2
@Rexford Der atrmBefehl entfernt Jobs, die von erstellt wurden at.
Eliah Kagan
9

Bei relativen Angaben (z. B. "nach 30 Minuten") können Sie den sleepBefehl einfach mit dem Befehl "Suspending / Hibernating" warten lassen.


Beispiele:

Warten Sie 30 Minuten und unterbrechen Sie dann:

sudo sleep 30m; sudo pm-suspend

Warten Sie 1 Stunde und machen Sie dann einen Winterschlaf:

sudo sleep 1h; sudo pm-hibernate
Eenoku
quelle
Ich mag diesen Ansatz auch.
KhoPhi
2
Nach 1h pm-hibernatewill root wieder ein Passwort haben und Suspend kommt nicht vor.
Vitaly Zdanevich
Wie wäre es, wenn Sie sich als root anmelden, um nicht nach einem Passwort gefragt zu werden?
banan3'14
4

Für bestimmte Zeiten wiederholt - wie das Herunterfahren von Computern ist eine bestimmte Zeit jeden Tag. benutze cron.

crontab -e

Fügen Sie Folgendes hinzu:

15 14 1 * * pmi action suspend

Wenn Sie es anpassen möchten.

* * * * * 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)

Für einen einmaligen Job haben wir das Kommando

Wenn Sie beispielsweise in 30 Minuten in den Ruhezustand wechseln möchten:

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

Oder wenn Sie um 23:00 Uhr pausieren möchten:

echo 'pmi action suspend' | at 11pm
cprofitt
quelle
2
Die Verwendung cronist eine gute Lösung, wenn das Ziel darin besteht, zu einer bestimmten Tageszeit oder zu einer bestimmten Zeit an einem bestimmten Wochentag, Monat oder Jahr den Ruhezustand oder Ruhezustand zu aktivieren. Aber für die Planung einer einzigen Suspension oder Ruhezustand, das , was zu sein scheint Ederico fragte nach (und das ist etwas , das viel mehr Sinn macht zu wollen , zu tun), der atsollte Befehl verwendet werden. (Sie können ein einzelnes Ereignis mit planen, cronindem Sie dafür sorgen, dass das Ereignis die relevante Crontab bearbeitet, z. B. mithilfe von sedoder. Dies ist awkjedoch äußerst komplex und nicht at
erforderlich
Passt nicht zu den relativen Begriffen, die von der Frage angefordert werden, es ist nur für bestimmte Zeitpläne nützlich.
Bruno Pereira
Ja, dies war ein Beispiel für die "bestimmte Zeit", die angefordert wurde. "Allerdings würde ich gerne wissen, wie man die Befehlszeile verwendet, um zu einem bestimmten Zeitpunkt, in absoluten Zahlen (z. B. 23:00 Uhr), in den Ruhezustand zu wechseln"
cprofitt 13.11.11
1
Sie haben Ihre Antwort bearbeitet, um Informationen zur Verwendung hinzuzufügen at, aber die von Ihnen hinzugefügten Informationen sind leider nicht korrekt. Der <Operator leitet Text aus der rechts angegebenen Datei oder dem angegebenen Gerät an die Standardeingabe für den links angegebenen Befehl weiter. Wenn Sie <anstelle von |(wie in meiner Antwort ) verwenden möchten, müssen Sie eine Datei mit pmi action suspend(oder pmi action hibernate) als Inhalt erstellen . Eine solche Komplexität macht |hier besser.
Eliah Kagan,
Als allgemeine Richtlinie können Sie einen catBefehl links von a |(z. B. cat foo | bar) durch einen <Ausdruck ( bar < foo) ersetzen . Wenn Sie jedoch einen echoBefehl links von a |haben, kann dieser nicht einfach durch einen <Ausdruck ersetzt werden.
Eliah Kagan