Läuft das Skript noch ?

  • Morgen !

    Ich hab ein Skript, dass via crontab alle 30 Minuten ausgeführt werden soll.
    Normale Laufzeit des Skripts liegt bei etwa 5 Sekunden. Da in dem Skript
    allerdings via GET etwas von einem anderen Server geholt wird kann es sein,
    dass das Skript länger läuft bzw sich sogar weghängt.

    Deshalb würd ich gern bei jedem Start prüfen ob das "alte" Skript noch läuft
    oder bereits beendet wurde.

    Wie kann ich dieses am besten machen ? In meinem Testszenario hab ich ein
    Skript mit einer Endlosschleife - doch weder ps -ef noch -ax zeigt mir das Skript
    an.

    Jemand ne lösung ? bin nich so in unix/linux bewandert :|


    btw. Alternative wäre mit einer "locked"-Datei. Allerdings bräuchte ich dann
    trotzdem die PID (o.ä.) um das "alte" Skript zu killen...

  • habs jetzt anders gelöst....

    ich erstell beim start ne lock-datei und schreib dort die pid rein.
    beim beenden lösch ich die datei wieder. so kann der neue lauf
    dann auf die file prüfen und den prozess killen...

  • das skript läuft auf dem webserver und holt sich vom applikation-server aus einer session
    die aktuelle index-seite. der applikationserver, bzw die instanzen können aber im laufenden
    betrieb mal hängen oder beschäftigt sein - deshalb bekommt das get keine rückmeldung.
    (so stands jedenfalls in meinem arbeitsauftrag *g)

    is alles weng kompliziert, und größtenteils auch nicht von mir erstellt. ich soll bloß
    praktisch den fehlerfall abfangen und des ganze dann in die crontab hängen. als ich
    dann gesehen hab, dass der autor bereits eine lock-datei erstellt... war die lösung
    dann recht naheliegend :)

    btw. shell-skript auf sles9