Wie starte ich alle 30 Minuten automatisch neu?

14

Ich möchte alle 30 Minuten einen Neustart meines Ubuntu einplanen. Gibt es einen Befehl oder eine grafische Möglichkeit, dies zu tun?

user123498
quelle
12
Ich bin nur neugierig: Was kann der Zweck sein, alle 30 Minuten neu zu starten?
Rafał Cieślak

Antworten:

30

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.

Neustart alle 30 Minuten und Warnung der Benutzer vor jedem Neustart:

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 rebootBefehl zu planen , empfehle ich daher, den shutdownBefehl 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.

  • Dadurch wird das System -rfünf Minuten nach Ausführung +5des Befehls für einen Neustart ( ) heruntergefahren . Es läuft jede halbe Stunde ( */30). Siehe man cronund man 5 crontab.
  • Wechseln Sie +5zu etwas anderem, um zu ändern, wie lange Benutzer nach einer Warnung vor einem Neustart noch Zeit haben.
  • 0,30under minute funktioniert auch, wenn Sie das vorziehen. (Ebenso, wenn es alle 20 Minuten wäre, könnten Sie schreiben */20oder 0,20,40.)
  • Vergewissern Sie sich, dass /sbindie PATHVariable 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.

  • Ein Vorteil hierbei ist, dass ein Administrator das gerade angekündigte Herunterfahren mit abbrechen kann sudo shutdown -c.
  • Wenn der Computer während der festgelegten Zeiten, zu denen der geplante Befehl ausgeführt werden soll, heruntergefahren ist, wird er nicht ausgeführt. Wenn dies nicht Ihren Anforderungen entspricht, müssen Sie Ihre Neustarts anders planen. (Dies ist nicht spezifisch für die Verwendung von 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.)

So können Administratoren den automatischen Neustart ganz einfach verhindern:

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 noautorebootvorhanden 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 aus shutdown -r +5.

    Diese Antwort erklärt, wie Kurzschlüsse und / oder Operatoren funktionieren können if- thenLogik. Für eine kurze, intuitive und informelle Erklärung können Sie den Befehl folgendermaßen lesen:

    /etc/noautorebootexistiert! Oder renne shutdown -r +5.

    Sehen Sie, um man [zu sehen, wie der Test selbst durchgeführt wird.

Eliah Kagan
quelle
12

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.

Der grafische Weg - Bevorzugte Methode

Installieren Sie gnome-schedulevom Ubuntu Software Center. Wenn Sie nichts zusätzliches installieren möchten, führen Sie dies auf Terminal Way aus.

Öffnen Sie gnome-scheduleden Bindestrich, erstellen Sie eine neue wiederholte Aufgabe und legen Sie die folgenden Optionen fest:

  • Beschreibung: Was immer du willst
  • Befehl: dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
  • Wählen Sie X-Anwendung direkt unter dem Befehl.
  • Zeit und Datum, erweitert:
    • Minute: 0,30

Belassen Sie die anderen Optionen auf ihren Standardwerten. Klicken Sie auf Hinzufügen .


Der Terminal-Weg - Keine Notwendigkeit für zusätzliche Software

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 :0diesem 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.

Verwenden Sie Gnome oder Unity nicht?

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.

Jorge Suárez de Lis
quelle
6

Führen Sie sudo crontab -evon der Befehlszeile aus und fügen Sie diese Zeile zur Datei hinzu:

0,30 * * * * reboot

Dadurch wird das System angewiesen, den Befehl rebootalle 30 Minuten als root auszuführen . Eine Übersicht über die Zeitsyntax finden Sie hier: http://linuxmoz.com/crontab-syntax-tutorial/

Kevin Chen
quelle
3
Dies funktioniert nicht, da ausgeführt werden rebootmuss 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 rebootwird auch nicht funktionieren, da sudoversucht wird, ein Passwort einzugeben und dies schlägt fehl.) /etc/crontabSollte stattdessen dafür verwendet werden (bitte beachten Sie, dass die Syntax leicht abweicht).
Eliah Kagan
1
Sie könnten sudo crontab -eeinen Cron-Eintrag ausstellen und dann erstellen.
Tass
-3

Verwenden Sie crondiese Option, um alle 30 Minuten einen Job zu planen. Zeigen Sie diesen Job auf ein Shell-Skript, das einfach hat

reboot

drin.

Da es cronals root ausgeführt wird, sollten Sie in Bezug auf die Berechtigungen keine besonderen Maßnahmen ergreifen müssen.

Aktualisieren

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.

shawty
quelle
Siehe mein Update .. du kannst mir jetzt 1 Punkt zurückgeben, wenn du möchtest ;-)
shawty
Versuchen Sie es noch einmal ... seien Sie geduldig ...
shawty
2
Dies ist jetzt überhaupt keine Antwort mehr! (Außerdem verwechseln Sie das Sticky-Bit und das Setuid-Bit .)
Eliah Kagan
Ja, es ist eine Antwort, ich habe sie getippt und als Antwort hinzugefügt, daher ist es eine Antwort !!!
Shawty