henry: crontab reboot

Hallo,

wenn ich mittels cron alle 6 Monate einen Rechner automatisch rebooten will, habe ich das Problem, das manchmal 2x gebootet wird.

z.B. wenn um 0 Uhr ein reboot(shutdown -r) kommt und der Rechner innerhalb einer Minute bootet, d.h. es ist immer noch 0 Uhr, dann wird sofort wieder gebootet.

Wie kann ich das verhindern.

Danke

  1. Wie kann ich das verhindern.

    Beim Booten die Zeit wohin schreiben und vor jedem Aufruf prüfen.

    Oder einfacher, das Bootscript (ist es eines?) ein paar Sekunden warten lassen bevor es bootet, dann tritt der Fall nicht mehr auf.

    1. Moin!

      Wie kann ich das verhindern. Beim Booten die Zeit wohin schreiben und vor jedem Aufruf prüfen.

      Oder einfacher, das Bootscript (ist es eines?) ein paar Sekunden warten lassen bevor es bootet, dann tritt der Fall nicht mehr auf.

      Ein paar? Ich würde sagen, genau 61 Sekunden.

      Oder: komplizierter aber sinnvoller: vor dem booten etwas wie apt-get update && apt-get upgrade. Dauert meist etwas mehr als eine Minute.

      Jörg Reinholz

  2. Hallo henry,

    wenn ich mittels cron alle 6 Monate einen Rechner automatisch rebooten will, habe ich das Problem, das manchmal 2x gebootet wird.

    z.B. wenn um 0 Uhr ein reboot(shutdown -r) kommt und der Rechner innerhalb einer Minute bootet, d.h. es ist immer noch 0 Uhr, dann wird sofort wieder gebootet.

    Ich halte das generell nicht für eine gute Idee. Aber wenn du das wirklich möchtest, ersetze einfach den Crontab-Eintrag durch das hier:

    0 0 * */6 * shutdown -r 00:01
    

    Das rebootet dann erst um 00:01. Alternativ könntest du auch 61 Sekunden warten, bevor der Rechner rebootet:

    0 0 * */6 * sleep 61; shutdown -r now
    

    Letzteres halte ich für sicherer, nicht, dass da irgendein Zeitzonen-Foo oder ein NTP oder so reinspielt, so dass du erst am darauf folgenden Tag um 00:01 rebootest.

    LG,
    CK

    1. Hallo Christian Kruse,

      z.B. wenn um 0 Uhr ein reboot(shutdown -r) kommt und der Rechner innerhalb einer Minute bootet, d.h. es ist immer noch 0 Uhr, dann wird sofort wieder gebootet.

      Ich halte das generell nicht für eine gute Idee. Aber wenn du das wirklich möchtest, ersetze einfach den Crontab-Eintrag durch das hier:

      0 0 * */6 * shutdown -r 00:01
      

      Das rebootet dann erst um 00:01.

      Wäre das nicht nur eine Verschiebung des Problems um eine Minute?

      Bis demnächst
      Matthias

      --
      Das Geheimnis des Könnens liegt im Wollen. (Giuseppe Mazzini)
      1. Hallo Matthias,

        z.B. wenn um 0 Uhr ein reboot(shutdown -r) kommt und der Rechner innerhalb einer Minute bootet, d.h. es ist immer noch 0 Uhr, dann wird sofort wieder gebootet.

        Ich halte das generell nicht für eine gute Idee. Aber wenn du das wirklich möchtest, ersetze einfach den Crontab-Eintrag durch das hier:

        0 0 * */6 * shutdown -r 00:01
        

        Das rebootet dann erst um 00:01.

        Wäre das nicht nur eine Verschiebung des Problems um eine Minute?

        Die Lösung des Problems ist es, den Reboot so lange zu verzögern, bis es nicht mehr 00:00 Uhr ist. Wenn ich also shutdown -r sage, es soll erst um 00:01 Uhr rebooten, dann ist das Problem gelöst und der Cron-Daemon würde den Cronjob nicht erneut ausführen.

        LG,
        CK

        1. Hallo Christian Kruse,

          0 0 * */6 * shutdown -r 00:01
          

          Das rebootet dann erst um 00:01.

          Wäre das nicht nur eine Verschiebung des Problems um eine Minute?

          Die Lösung des Problems ist es, den Reboot so lange zu verzögern, bis es nicht mehr 00:00 Uhr ist. Wenn ich also shutdown -r sage, es soll erst um 00:01 Uhr rebooten, dann ist das Problem gelöst und der Cron-Daemon würde den Cronjob nicht erneut ausführen.

          Stimmt, denn der Cronjob wird ja immer noch um 00:00 ausgeführt.

          Bis demnächst
          Matthias

          --
          Das Geheimnis des Könnens liegt im Wollen. (Giuseppe Mazzini)