LINUX: Sinusbot durch einen Cronjob zu einer festen Zeit neu starten

  • Moin Moin,


    ich habe das Problem das wenn ich meinen Sinusbot zu einer Zeit neu starte, er Diesen in einem Interval immer wieder zur gleichen Zeit startet.

    Aber ich möchte nicht, dass der Sinusbot täglich zu der Zeit startet, an dem ich ihn wegen diversen Gründen manuell starte.


    Ich habe mich im Internet schlau gemacht und versucht, einen Cronjob zu schreiben.


    Leider habe ich den Code gerade auch nicht mehr zur Hand, weil ich alles aus Frust gelöscht habe.


    Gibt es eine Möglichkeit, einen Cronjob zu machen, damit der Bot immer um eine gleiche Uhrzeit am Tag rebooted?

    Einmal editiert, zuletzt von wiesel ()

  • Servus,

    ich kenne mich mit dem Sinusbot nicht mehr aus, da ich ihn seit der damaligen ersten Version nicht mehr angerüht habe, aber der Cronjob sollte so in der Art aussehen:

    Code: /etc/cron.d/sinusbot
    30 6 * * * sinusbot /home/sinusbot/restart_command

    Erklärung:

    • 30 6 * * *: Cronjob wird jeden Tag um 06:30 Uhr morgens (in der Zeitzone des Linux Host Systems) ausgeführt
    • sinusbot: Der Linux User, der den Cronjob Befehl ausführen soll
    • /home/sinusbot/restart_command: Der Linux Befehl, der ausgeführt werden soll

    So, wie du normalerweise den Sinusbot neustartest, kannst du den Linux Befehl einfach 1:1 in die Cronjob Datei reinpacken.


    Um das ganze zu testen, empfehle ich erstmal eine Uhrzeit zu konfigurieren, die bald ist, damit du gleich verifizieren kannst, ob der Cronjob entsprechend funktioniert, wie er soll. Alternativ kannst du ihn auch einfach alle 5 Minuten z.B. neustarten lassen, um es zu testen:

    Code: /etc/cron.d/sinusbot
    */5 * * * * sinusbot /home/sinusbot/restart_command

    Mit einem tail -f /var/log/syslog | grep -i cron solltest du dann auch in der Syslog sehen, ob der Restart-Befehl entsprechend ausgeführt wurde oder nicht. Ist dies der Fall, musst du nur noch prüfen, ob der Sinusbot tatsächlich neugestartet wurde oder nicht. Wenn es nicht geklappt hat, dann liegt es meistens an einem Linux Befehl, der nicht in der PATH-Variable des Cronjobs bekannt ist. Ich empfehle daher immer die absoluten Pfade zu verwenden (Beispiel: wget -> /usr/bin/wget; findest du mit which wget raus).


    Wenn alles funktioniert, wie es soll, musst du nur noch die Uhrzeit im Cronjob entsprechend setzen, wie du es gerne hättest.


    PS: Eine ganz hilfreiche Seite, um Cronjob-Definitionen zu bauen: https://crontab-generator.org/

    Viele Grüße,
    Sebbo

    ---

    DevOps Engineer <3

  • Moin Moin


    Ich danke dir für deine schnelle und Gute Antwort.


    Danke noch mal Sebbo

    Einmal editiert, zuletzt von wiesel ()