Ich möchte alle 30 Minuten einen Neustart meines Ubuntu einplanen. Gibt es einen Befehl oder eine grafische Möglichkeit, dies zu tun?
Ich möchte alle 30 Minuten einen Neustart meines Ubuntu einplanen. Gibt es einen Befehl oder eine grafische Möglichkeit, dies zu tun?
Antworten:
Der beste Weg, dies zu tun, hängt davon ab, warum Ubuntu jede halbe Stunde neu gestartet werden soll.
Ich empfehle daher, Ihre Frage zu bearbeiten, um zu erklären, warum Sie dies tun möchten.
Unter der Annahme, dass Benutzer den Computer lokal oder remote verwenden, ist es am besten, Ubuntu nicht ohne Vorwarnung von unten neu zu starten. Anstatt den reboot
Befehl zu planen , empfehle ich daher, den shutdown
Befehl so zu planen, dass der Benutzer gewarnt wird.
Fügen Sie Folgendes hinzu, um alle halbe Stunde mit einer Warnung 5 Minuten vorher ein Herunterfahren zu planen /etc/crontab
:
#minute hour mday month wday user command
*/30 * * * * root shutdown -r +5
Sie müssen die erste Zeile, die ein Kommentar ist, nicht hinzufügen. Ich habe es aus Gründen der Klarheit eingefügt - so etwas gibt es bereits.
-r
fünf Minuten nach Ausführung +5
des Befehls für einen Neustart ( ) heruntergefahren . Es läuft jede halbe Stunde ( */30
). Siehe man cron
und man 5 crontab
.+5
zu etwas anderem, um zu ändern, wie lange Benutzer nach einer Warnung vor einem Neustart noch Zeit haben.0,30
under minute funktioniert auch, wenn Sie das vorziehen. (Ebenso, wenn es alle 20 Minuten wäre, könnten Sie schreiben */20
oder 0,20,40
.)/sbin
die PATH
Variable oben in angegeben ist /etc/crontab
. Andernfalls muss shutdown
(unter command
) als aufgerufen werden /sbin/shutdown
.Der Befehl wird immer zur halben Stunde ausgeführt, wenn die Maschine zu diesem Zeitpunkt in Betrieb ist . Dadurch werden die Abschaltungen alle halbe Stunde angekündigt und um 5 Minuten und 35 Minuten nach der vollen Stunde ausgeführt.
sudo shutdown -c
.shutdown
, gilt jedoch in gleicher Weise, wenn Sie eine Planung durchführen reboot
.) In diesem Fall bearbeiten Sie Ihre Frage, um Ihre spezifischen Anforderungen zu erläutern. (Ich würde dies empfehlen anacron
, aber Ihre Zeitintervalle sind viel zu kurz.)Möglicherweise möchten Sie dies so einrichten, dass ein Administrator alle automatisch geplanten Neustarts auf einfache Weise unterbrechen kann:
#minute hour mday month wday user command
*/30 * * * * root [ -e /etc/noautoreboot ] || shutdown -r +5
Bei diesem Zeitplan wird der Neustart auf die gleiche Weise geplant - jede halbe Stunde mit einer Warnung von fünf Minuten - mit der Ausnahme, dass kein Neustart geplant wird, wenn eine aufgerufene Datei in noautoreboot
vorhanden ist /etc
.
Diese Steuerdatei kann von einem Administrator erstellt werden mit:
sudo touch /etc/noautoreboot
Es kann gelöscht werden mit:
sudo rm /etc/noautoreboot
Beachten Sie, dass es darauf ankommt , ob die Datei vorhanden ist oder nicht , was sie enthält.
Wenn der Neustart geplant ist und Benutzer gewarnt werden, wird die Datei erstellt, und der (unmittelbar bevorstehende) Neustart wird weiterhin durchgeführt.
Wie funktioniert das? Es verwendet einen Kurzschluss- bewerteten oder Operator ( ||
) als Kurzform für:
Wenn
/etc/noautoreboot
nicht vorhanden, führen Sie ausshutdown -r +5
.
Diese Antwort erklärt, wie Kurzschlüsse und / oder Operatoren funktionieren können if
- then
Logik. Für eine kurze, intuitive und informelle Erklärung können Sie den Befehl folgendermaßen lesen:
/etc/noautoreboot
existiert! Oder renneshutdown -r +5
.
Sehen Sie, um man [
zu sehen, wie der Test selbst durchgeführt wird.
Ich liebe es, dem Session Manager mitzuteilen, dass wir einen Neustart durchführen möchten. Dies kann ohne Root-Berechtigungen erfolgen, und wir erhalten ein nettes Fenster, das uns warnt, dass das System neu gestartet wird - auch wenn wir den Neustart abbrechen können, wenn wir möchten.
Installieren Sie gnome-schedule
vom Ubuntu Software Center. Wenn Sie nichts zusätzliches installieren möchten, führen Sie dies auf Terminal Way aus.
Öffnen Sie gnome-schedule
den Bindestrich, erstellen Sie eine neue wiederholte Aufgabe und legen Sie die folgenden Optionen fest:
dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
Belassen Sie die anderen Optionen auf ihren Standardwerten. Klicken Sie auf Hinzufügen .
Führen Sie vom Terminal aus:
crontab -e
Diese Zeile hinzufügen:
0,30 * * * * DISPLAY=:0 dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
Sicherer Ausgang. Angenommen, Sie verwenden nano
(die Standardeinstellung), drücken Sie Strg + o und Strg + x .
Bitte beachten Sie, dass dies nicht funktioniert, wenn sich Ihr DISPLAY tatsächlich von dem unterscheidet. Aus :0
diesem Grund wird diese Methode nicht bevorzugt. Wenn Sie Ihren Computer jedoch alle 30 Minuten neu starten, wird dies höchstwahrscheinlich immer der Fall sein :0
.
Beide oben erläuterten Methoden hängen von einigen Gnome-Komponenten ab, die sich sowohl in Gnome-Sitzungen als auch in Unity befinden. Wenn Sie dies in anderen Umgebungen tun möchten (wie Kubuntus KDE, Kubuntus LXDE ...), sollten Sie stattdessen den Befehl durch diesen ersetzen:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
Dies erfordert keine Bestätigung und wird sofort neu gestartet, funktioniert jedoch in allen Umgebungen, vorausgesetzt, Sie haben ConsoleKit nicht manuell deinstalliert.
Führen Sie sudo crontab -e
von der Befehlszeile aus und fügen Sie diese Zeile zur Datei hinzu:
0,30 * * * * reboot
Dadurch wird das System angewiesen, den Befehl reboot
alle 30 Minuten als root auszuführen . Eine Übersicht über die Zeitsyntax finden Sie hier: http://linuxmoz.com/crontab-syntax-tutorial/
reboot
muss root
, und dies fügt es der persönlichen crontab des Benutzers hinzu, sodass es als dieser Nicht-Root-Benutzer ausgeführt wird. (Dasselbe mit sudo reboot
wird auch nicht funktionieren, da sudo
versucht wird, ein Passwort einzugeben und dies schlägt fehl.) /etc/crontab
Sollte stattdessen dafür verwendet werden (bitte beachten Sie, dass die Syntax leicht abweicht).
sudo crontab -e
einen Cron-Eintrag ausstellen und dann erstellen.
Verwenden Sie cron
diese Option, um alle 30 Minuten einen Job zu planen. Zeigen Sie diesen Job auf ein Shell-Skript, das einfach hat
reboot
drin.
Da es cron
als root ausgeführt wird, sollten Sie in Bezug auf die Berechtigungen keine besonderen Maßnahmen ergreifen müssen.
Ja, in der Tat erlaube ich auf keinem meiner Systeme benutzerbasierte Crontabs (Es gibt bessere Möglichkeiten, Benutzern geplante Aufgaben auf Benutzerebene zu ermöglichen). Cron wurde von Anfang an ausschließlich für die Systemautomatisierung und nicht für den normalen Zeitplan von Benutzern entwickelt Aufgaben. Dinge wie Holzrotationen (was heute noch passiert)
Neustart MUSS als root ausgeführt werden, um korrekt zu funktionieren. Die Alternative besteht darin, das Sticky-Bit so zu setzen, dass es als normaler Benutzer tatsächlich als root ausgeführt wird und wie erwartet funktioniert. Dabei müssen Sie jedoch Ihren Server öffnen, um reguläres Ausführen zu ermöglichen Benutzer können es nach Belieben neu starten.
Sie könnten sogar möglicherweise einen Anruf an SUDO automatisieren, aber ich muss mich mit diesem befassen, nicht sicher, ob Sie die Notwendigkeit eines Passworts mit SUDO automatisieren können (ich verwende es nicht oft, ich ziehe es vor, einfach direkt bei einem Root zu landen Shell mit SU)
Wenn Sie es in der systemweiten crontab einrichten, wird alles als root ausgeführt, daher ist meine Aussage korrekt (ich habe nur versäumt zu erwähnen, dass die systemweite verwendet werden sollte).
Wie für Ihre Frage "Warum es in ein Skript einwickeln?" Gut, warum nicht? Wenn das OP es in ein Shell-Skript einfügt, muss es zu einem späteren Zeitpunkt einfach hinzugefügt werden, anstatt crontab zu öffnen. Suchen Sie den Job, entfernen Sie ihn, ersetzen Sie ihn durch ein Shell-Skript. Dann schreiben Sie ein Skript mit dem alten + neuen in.
Über 20 Jahre als Sys Admin / Entwickler in der Arbeit mit Systemen bis hin zu Ultrix / Solaris und sogar VAX haben mir einen wichtigen Punkt beigebracht.
Wenn Sie es am Anfang einfacher machen können, bleibt es für die gesamte Lebensdauer einfach.
Ich verstehe diese "minimalistische" Einstellung, die viele moderne Systemadministratoren haben, nicht, wenn der Schlüssel zum Erfolg darin liegt, so wenig wie möglich zu tun. Die meisten Server sind heutzutage mehr als zwanzig Mal leistungsfähiger als alles, mit dem ich je angefangen habe. Diese Art von Szenario (Einwickeln von Shell-Skripten) wurde damals empfohlen. Es gibt also wirklich kein Argument, dies jetzt nicht zu tun.
Es sei denn, Sie möchten wirklich auf Hardcore-Unix / Linux umsteigen. In diesem Fall markieren Sie alles mit dem Cron-Eintrag und fügen alles so zusammen, wie es gemacht werden sollte :-)
Allerdings schweife ich ab und verstehe auch, dass sich viele Jungs heutzutage in die Tiefe werfen und sagen, dass sie die Dinge zum Laufen bringen sollen, da ihnen die Zeit (und normalerweise die Neigung) fehlt, sich hinzusetzen und neue Techniken zu erlernen (oder alt in diesem Fall) oder wollen sogar mit diesem Zeug außerhalb der Arbeit spielen.
Ich persönlich habe einen einzigen Server unter den Servern, auf dem ich herumspielen kann, damit ich solche Dinge testen kann ... besser A oder B, also rate ich nicht ohne Grund zu einem der Server Dies.