2017-02-16 2 views
0

Ich habe Python-Skript, das überprüft, ob der Server nach oben oder unten ist, und wenn es down ist sendet es eine E-Mail mit wenigen Systemprotokollen.Cronjob alle 5 Minuten ausgeführt, aber nach der ersten Ausführung gestoppt?

Was ich will, ist für den Server alle 5 Minuten überprüft zu halten, so habe ich den cronjob wie folgt: */5 * * * * /python/uptime.sh

Also, wenn die nach unten Server, Es sendet eine E-Mail. Aber ich möchte, dass das Skript nach dem ersten nicht mehr ausgeführt wird (es werden mehr E-Mails gesendet).

Kann mir jemand helfen, wie das geht? Danke.

+0

Haben Sie versucht, eine Bedingung in das Skript zu stellen, um zu prüfen, ob der Server aktiv ist oder Sie den Cronjob wirklich löschen möchten? – RageAgainstTheMachine

+0

Das ganze Skript überprüft, ob der Server hoch oder runter ist. Ich möchte nur eine Einschränkung auf den Cronjob setzen, wenn das Skript ausgeführt wird (falls der Server ausfällt), sollte ich weiterhin E-Mails senden, bis der Server wieder verfügbar ist. stattdessen nur eine E-Mail. –

Antwort

0

Einfache Lösung ist, können Sie einige Bash env Variable MONITORING=true setzen und lassen Sie Ihr Python-Skript diese Variable mit os.environ["MONITORING"] überprüfen. Wenn diese Variable true ist, dann überprüfe, ob der Server hoch oder runter ist, sonst überprüfe nichts. Sobald der Server down ist, setzen Sie diese Variable auf false von Skript wie os.environ["MONITORING"] = false. So wird es keine E-Mails senden, bis Sie diese env-Variable wieder true setzen.

0
  • schreiben ein leeres While True Skript, das immer läuft (zB: „mailtrigger.py“)
  • laufen sie mit -nohup mailtrigger.py von Shell in Endlosschleife
  • , sobald der Server Prüfung ist nach unten, wenn mailtrigger.py läuft wenn seine nicht dann mailtrigger.py (kill process id) beenden

nächsten Iterationen Mails nicht senden, da mailtrigger.py nicht läuft.