Wie kann ich einen Neustart unter Linux planen?

38

Ich bin neu in Linux und möchte einen Neustart um Mitternacht planen. Wie soll ich das machen

Bearbeitungen:

  • Es tut mir leid, dass ich nicht alle Details angegeben habe. Ich möchte jeden 3. Samstag im Monat um 23:30 Uhr einen Neustart durchführen.

  • Ich weiß nicht, was los ist, aber ich kann Crontab nicht finden. Was ich habe, ist cron.d; cron.daily; cron.weekly; cron.monthly;

Es tut mir leid für die Noob-Frage. Bitte hilf mir. Vielen Dank.

klauriens
quelle
2
Die eigentliche Frage ist, warum Sie dies regelmäßig tun möchten, haben Sie eine undichte Anwendung oder so etwas? Wenn Sie regelmäßige Neustarts planen, um ein Problem zu lösen, haben Sie wahrscheinlich ein größeres Problem ...
JamesHannah
1
Soll es jede Nacht neu gestartet werden?
Matt Simmons
4
Ich stimme nicht ab, weil es eine Art Richtlinienentscheidung ist (und ich denke, dass nächtliche Neustarts ein bisschen übertrieben sind), aber die regelmäßige Planung von Neustarts in einer Infrastruktur ist eine angemessene Methode, um sicherzustellen, dass auf Computern aktuelle Kernels und alle Dienste ausgeführt werden sind gepatcht. Ich habe gehört, dass eine Betriebszeit von 3 Monaten ein guter Mittelweg ist.
Matt Simmons
Wenn dies eher ein Kommentar zur Frage als eine Antwort wäre, würde ich dem zustimmen. Eigentlich würde ich es mir anders überlegen, denn die Frage war zweideutig, ob dies eine einmalige oder eine normale Sache war. :)
Intuited
3
/etc/crontabDer 30 23 15-21 * 6 /sbin/shutdown -r nowNeustart von entry like findet jeden 3. Samstag im Monat um 23:30 Uhr statt.
Chris S

Antworten:

45

Geben Sie ein shutdown -r 0:00und es wird um Mitternacht neu gestartet.

Wenn Sie jeden Abend neu starten möchten, fügen Sie einen Cron-Eintrag mit crontab -e als root hinzu, um shutdown -r jeden Abend um Mitternacht auszuführen

@midnight shutdown -r now
Radius
quelle
3
Ein Zeitargument ist obligatorisch, das Sie verwenden können now.
Tobu
Nein ... wenn er einen einmaligen Befehl möchte und den Befehl jetzt eingeben möchte, sollte er die Zeit hinzufügen!
Radius
3
@Nein, es braucht ein Zeitargument wie nowin der crontab-Zeile.
Bis auf weiteres angehalten.
Oups ja sorry, falsch verstanden ich Tobu Kommentar und glaube , er war 00.00 im ersten Befehl nutzlos erzählt ... ich richtig bearbeitet (und Massimo Antworten zu)
Radius
Ich würde gerne wissen, welche anderen @{command}Variablen verfügbar sind.
Greg
16

Verwenden crontab.

http://en.wikipedia.org/wiki/Crontab

Das Hinzufügen dieses Eintrags zu / etc / crontab sollte Folgendes tun:

0 0 * * * /sbin/shutdown -r now
Massimo
quelle
3
shutdownbenötigt ein Zeitargument wienow
Bis auf weiteres angehalten.
1
Dies führt jeden Abend einen Neustart durch. Ich bin mir nicht sicher, ob er das will.
Cstamas
1
Die ursprüngliche Frage ließ es so klingen, als wollte er, dass es jede Nacht neu gestartet wurde. Er möchte eigentlich, dass es jeden 3. Samstag neu gestartet wird, was mit einem Crontab immer noch am einfachsten ist
Chris S
Ich weiß nicht, was los ist, aber ich kann die Crontab nicht finden. Was ich habe, ist die cron.d; cron.daily; cron.weekly; cron.monatlich; Es tut mir leid für die Noob-Frage. Bitte helfen Sie mir. danke
klauriens
Dies hängt von der verwendeten Distribution ab. In der Regel sollten Sie jedoch eine Datei mit dem Namen "crontab" im Verzeichnis / etc Ihres Systems finden. Sie sollten auch in der Lage sein, die aktuelle crontab mit dem Befehl "crontab -l" zu untersuchen und mit "crontab -e" zu bearbeiten.
Massimo
12

Eine weitere Option ist der Befehl at , der auf vielen Linux-Distributionen verfügbar ist. Weitere Informationen finden Sie in der Manpage. Die allgemeine Syntax für Ihren Zweck lautet jedoch:

Echo "Neustart" | um 0000 jun 27

So zitieren Sie die OS X-Manpage:

at - führt Befehle zu einem bestimmten Zeitpunkt aus

Klingt wie das, wovon wir reden. ;)

Zayne S. Halsall
quelle
1

Soweit mir bekannt ist, können Sie mit cron keine Aufgaben für den "letzten Freitag eines jeden Monats" oder den "dritten Donnerstag eines jeden Monats" planen. Was Sie tun können, wie hässlich es auch sein mag, ist, jeden Samstag um 23:30 Uhr ein Skript auszuführen und dieses Skript dann bestimmen zu lassen, ob dieser bestimmte Samstag der dritte Samstag der Woche ist. .

Ich hoffe das hilft. Ich habe keine gute Lösung für dieses Problem gefunden. Ich habe diesen Thread gefunden, weil ich nach einer Lösung für das gleiche Problem gesucht habe.

ervingsb
quelle
1
Die obigen Kommentare von "30 23 15-21 * 6 / sbin / shutdown -r now" funktionieren. Grundsätzlich läuft es nur in der dritten Woche des Monats, aber auch am Samstag
Sirex
Ich glaube nicht, dass diese Cron-Linie so funktioniert, wie Sie denken.
Ervingsb
Ich habe die folgenden zwei Zeilen erstellt: "30 23 1-7 * 4 Datum" und "30 23 1-7 * 3 Datum". Ich habe gestern Abend zwei Mails erhalten, in denen stand: "Wed Mar 7 23:30:02 CET 2012"
ervingsb
Das letzte Feld entspricht dem Wochentag, wobei Null der Sonntag ist. Die 4 Cronjobs sollten an einem Mittwoch nicht zusammenpassen.
Sirex
Das habe ich gemeint. Die Regel, die Sie geschrieben haben, bedeutet nicht, was Sie denken, dass es bedeutet. Dadurch wird der Job eine Woche lang jeden Tag ausgelöst. Egal an welchem ​​Wochentag.
Ervingsb
0

1) Geben Sie in der Befehlszeile Folgendes ein: 2) Wenn Sie wissen, wo sich der Neustart befindet (normalerweise / sbin / reboot), kopieren Sie die CD in eines der Verzeichnisse in /etc/cron.daily, /etc/cron.weekly, / etc / cron. stündlich etc ... iewhich reboot
cd /etc/cron.weekly

3) Erstellen Sie eine Datei (mit nano oder vim), rufen Sie sie zzreboot auf und fügen Sie die folgenden Zeilen hinzu:

#! / bin / sh
/ sbin / reboot

Der Grund, warum Sie die Datei zzwhatever aufrufen möchten, besteht darin, sicherzustellen, dass es sich um den letzten Job handelt, der nach allen anderen Jobs aufgerufen wurde. Um sicherzustellen, dass ls -les sich um die letzte Datei handelt, führen Sie einfach einen Befehl im Verzeichnis aus.

Shawn Bakhtiar
quelle