Automatisches Herunterfahren zu festgelegten Zeiten?

18

Ich bin mir bewusst, dass ich (sudo?) shutdown -h hh:mmIn einem Terminalfenster verwenden kann, um ein System herunterzufahren. Der angemeldete Benutzer ist jedoch ein Kioskbenutzer, der so gesperrt ist, dass das Terminal (oder ein anderes Fenster als Firefox) kann nicht geöffnet werden.

Meine Frage ist:
Gibt es eine Möglichkeit, dies zu tun, ohne dass ein Terminalfenster geöffnet wird? Ich habe über Cron gelesen, kann es aber nicht ganz herausfinden.
Wie kann ich die Ausschaltzeit ändern, abhängig von dem Tag, an dem es ist?

MrAxlee
quelle
Möchten Sie um 02:00 Uhr herunterfahren?
αғsнιη
Nein, sorry, das war genau das, was in dem von mir gelesenen Beispiel verwendet wurde. Normalerweise um 11:30 Uhr, aber ich habe mich gefragt, ob es eine Möglichkeit gibt, verschiedene Zeiten für verschiedene Tage anzugeben.
MrAxlee
1
Sie können die URL für das automatische Herunterfahren beziehen. askubuntu.com/questions/19774/…
vembutech
1
@vembutech Diese Frage bezieht sich auf das Herunterfahren nach Ablauf einer bestimmten Zeitspanne - und nicht auf das Herunterfahren zu einer bestimmten Zeit - aber obwohl es einfach wäre, dies an meine Bedürfnisse anzupassen, kann ich immer noch keine anderen Fenster als Firefox ausführen. Vielen Dank für Ihre Antwort! Es scheint viel einfacher als die Verwendung von Cron, und ich werde es höchstwahrscheinlich für andere
Zwecke
@MrAxlee ... Sie möchten also, dass das System n Stunden nach dem Einschalten heruntergefahren wird ?
Kaz Wolfe

Antworten:

30

Cron wird dafür sehr gut funktionieren.

Fügen Sie die folgende Zeile (mit Anpassungen) an das Ende von /etc/crontab:

30 23 * * * root shutdown -h now

Um 23:30 Uhr (23:30 Uhr) wird der Kiosk geschlossen. Unabhängig davon, welcher Benutzer angemeldet ist, wird der Befehl shutdown als root ausgeführt.

(Wenn Sie die globale crontab nicht verwenden möchten, melden Sie sich als root an und verwenden Sie crontab -e. Verwenden Sie dieselbe Syntax wie oben ohne root).


Cron-Format:

MM HH DD OO WW command

MM: Minute, 0-59
HH: 24-Stunden-Stunde
DD: Tag des Monats
OO: Monat
WW: Wochentag (Sonntag ist 0, Montag ist 1)
command: Selbsterklärend

Kaz Wolfe
quelle
@JacobVlijm Wann wurde das hinzugefügt? Ich sehe es nicht in den offiziellen Cron-Dokumenten .
Kaz Wolfe
1
Ich werde es nachschlagen ...
Jacob Vlijm
1
from crontab (5): Das Format der System-Crontab / etc / crontab enthält eine who-Spalte, die in Benutzer-Crontabs nicht vorhanden ist. In der crontab des Systems führt cron den Befehl als den in dieser Spalte angegebenen Benutzer aus. In einer Benutzer-Crontab werden alle Befehle als der Benutzer ausgeführt, der die Crontab erstellt hat.
Jacob Vlijm
@ Whaaaaaat Tolle Antwort, funktioniert einwandfrei, danke !. Was ist der Unterschied zwischen -hund -s?
MrAxlee
1
@MrAxlee -sscheint keine "richtige Syntax" zu sein. -hbedeutet, das System anzuhalten oder herunterzufahren (Systemwahl - Herunterfahren bevorzugt)
Kaz Wolfe
6

Ein Cronjob scheint der beste Weg zu sein, da Sie verschiedene Zeiten für verschiedene Tage angeben können. Auf Gnome-basierten Systemen können Sie nur installieren GNOME Shedule Tasks mithilfe von

sudo apt-get install gnome-schedule

und konfigurieren Sie dann den Cronjob über die GUI.

sonst müsstest du verwenden sudo crontab -e die folgenden Zeilen und dann hinzufügen

30 11 * * 1-5 /sbin/shutdown -h now
30 10 * * 0,6 /sbin/shutdown -h now

Dies würde den PC von Montag bis Freitag um 11:30 Uhr und am Samstag und Sonntag um 10:30 Uhr herunterfahren. Die Struktur ist sehr einfach:

minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday), command 

Weitere Informationen hierzu finden Sie auch in CronHowto

Christian Rauchenwald
quelle
2
Ich musste /sbin/shutdownstattdessen speziell verwenden, shutdownweil mein Root-Cron-Pfad anders war als in dem Terminal, in dem ich mein Skript ausprobiert habe.
Jaakko
3

Wir können zum angegebenen Zeitpunkt automatisch herunterfahren, indem wir einfach command sudo poweroffin ausführen crontab.

Wenn Sie das System täglich um 18:30 Uhr herunterfahren möchten. Geben Sie das Terminal ein:

sudo crontab -e

bearbeiten

30 18 * * * poweroff
Gänseblümchen
quelle
@mrm Es gibt alternative Methoden, es könnte viele verschiedene Lösungen für ein bestimmtes Problem geben und die Antworten darauf. Ist es nicht sinnvoll zu antworten oder nicht? Bitte ich Sie, nicht abzustimmen, um zu antworten oder Fragen zu stellen, wenn Sie sich darüber nicht im Klaren sind. Lesen Sie die Frage richtig durch und prüfen Sie, ob die Antwort auf diese bestimmte Frage zutrifft oder nicht. Wenn Sie immer noch ein Dilemma haben, können Sie auf Ask Ubuntu Meta oder hier nachfragen und dann eine Entscheidung treffen.
Gänseblümchen
In einer Crontab-Zeile gibt es zwei Probleme: Sie poweroffüberspringen Shutdown-Skripte, die wichtig sein können, um beispielsweise Ihre Datenbank oder was auch immer sicher herunterzufahren, und Sie haben eine sudoin einer Root-Crontab, die nicht benötigt wird. Sie haben auch nicht angesprochen, wie auf verschiedene Wochentage verwiesen werden soll, als die Frage gestellt wurde. Nein, dies ist keine alternative Methode. So wie es ist, sind es zwei Fehler und eine Unterlassung. Die beiden anderen Antworten, die Sie ein Jahr zuvor erhalten haben, sind richtig und funktionieren tatsächlich.
mrm
@mrm Nun, ich benutze dieses Skript seit drei Jahren und habe kein Problem festgestellt. Und ja diese alternative und auch richtige sinnvolle Methode. Die Warteschlange wird zu festgelegten Zeiten automatisch heruntergefahren. Es gibt einen Befehl zum Herunterfahren und für eine automatisch festgelegte Zeit können wir crontab gemäß unserer Anforderung verwenden. Es wäre besser für Sie, wenn Sie eine andere Frage zu Ihrem Problem stellen.
Gänseblümchen