Timeout für auszuführendes Programm

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von miketech, 16.12.2004.

  1. #1 miketech, 16.12.2004
    miketech

    miketech Routinier

    Dabei seit:
    03.04.2003
    Beiträge:
    403
    Zustimmungen:
    0
    Hi zusammen,

    ich bin gerade dabei ein kleines Bash-Script zu schreiben. Dabei soll ein Programm gestartet werden und die Laufzeit des Programms beobachtet werden, d.h.:

    In meinem Bash-Script starte ich ein anderes Programm. Nun möchte ich, dass die Ausführung des anderen Programms nach 10 Sekunden abgebrochen wird, wenn es immer noch läuft. D.h. ich benötige eine Art Timeout für exec. Wenn das Programm, das ich aufrufe kürzer als 10 Sekunden läuft ist alles prima. Wenn es jedoch länger als 10 Sekunden läuft möchte ich den Aufruf abbrechen und einen Fehlercode zurückbekommen.

    Ich habe das bereits mit read versucht, aber das klappt noch nicht so ganz. Weil wenn das Programm keine Ausgabe macht, sondern einfach nur arbeitet scheint read damit nicht zu funktionieren. Hat jemand einen Tipp?

    Gruß

    Mike
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    Hmm, so ganz billig wäre es z.B.
    Code:
    #!/bin/sh
    echo "Starte Anwendung"
    ( anwendung_bla_blubb_foo ) &
    sleep 10
    `ps -ef | grep anwendung_bla_blubb_foo | grep -v grep >>/dev/null`
    if [ $? -eq "0" ]
    then
     echo "Programm läuft, wird beendet."
     kill anwendung_bla_blubb_foo
    fi
    
     
  4. #3 miketech, 16.12.2004
    miketech

    miketech Routinier

    Dabei seit:
    03.04.2003
    Beiträge:
    403
    Zustimmungen:
    0
    Hi,

    danke für die Antwort. Jedoch kann es sein, dass die Anwendung auch noch parallel in einem anderen Prozess läuft. D.h. ich müsste sichergehen, dass es genau die ProzessID ist, die noch läuft. Kann ich das irgendwie abfragen?

    Gruß

    Mike
     
  5. rup

    rup Haudegen

    Dabei seit:
    10.04.2002
    Beiträge:
    627
    Zustimmungen:
    0
    #!/bin/bash

    DeinProgramm &
    sleep 10
    kill $!
     
  6. #5 miketech, 17.12.2004
    miketech

    miketech Routinier

    Dabei seit:
    03.04.2003
    Beiträge:
    403
    Zustimmungen:
    0
    Hi,

    danke für den Tipp. So funktioniert es zumindest schonmal. Allerdings hab ich nun das Problem, dass auch wenn mein Programm kürzer als 10 Sekunden läuft, ich auf jeden Fall 10 Sekunden warten muss. Ich möchte gerne nur 10 Sekunden warten, wenns gar nicht anders geht. Ansonsten soll er ruhig früher abbrechen.

    Gruß

    Mike
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. rup

    rup Haudegen

    Dabei seit:
    10.04.2002
    Beiträge:
    627
    Zustimmungen:
    0
    Schnell zusammengehackt, sollte aber funzen.

    Code:
    #!/bin/bash
    
    DeinProgramm &
    pid=$!
    
    typeset -i i=0
    while ps $pid >/dev/null
    do
            sleep 1
            i=$i+1
            if [ $i -ge 10 ]
            then
                    kill $pid
                    break
            fi
    done
    
     
  9. #7 miketech, 18.12.2004
    miketech

    miketech Routinier

    Dabei seit:
    03.04.2003
    Beiträge:
    403
    Zustimmungen:
    0
    Wow, klasse! Danke!!

    Mike
     
Thema:

Timeout für auszuführendes Programm

Die Seite wird geladen...

Timeout für auszuführendes Programm - Ähnliche Themen

  1. Timeout für Long Time Querys

    Timeout für Long Time Querys: Hi, ich habe ein kleines Script für Cronjob Aufrufe. Nun ist das Problem das ich die Einstellungen von SQL und PHP so setzen (musste) das die...
  2. Timeout für ein Bash Script

    Timeout für ein Bash Script: Hallo, ich hoffe, dass ich hier richtig bin. Meine Frage ist, glaube ich, nichts besonderes aber dennoch konnte ich bei google leider keine...
  3. Timeout Grenze für "ls -l" setzen

    Timeout Grenze für "ls -l" setzen: Hallo zusammen, ich habe folgendes Problem. Ich will in folgendem Shell-Script eine Timeout-Grenze für den ls-Befehl definieren. while read...
  4. Timeout für Netzlaufwerke im Winows

    Timeout für Netzlaufwerke im Winows: Hallo! Ich habe das Problem bei einem Samba Server, daß alle Laufwerke nach einer bestimmten Zeit neu verbunden werden müssen. D.H. Das...
  5. "send: Cannot determine peer address" nach Timeout mit UDP Server -Perl Socket eval{}

    "send: Cannot determine peer address" nach Timeout mit UDP Server -Perl Socket eval{}: Mahlzeit, ich habe ein kleines Problem und würde mich über eure Mithilfe freuen! Folgender UDP-Server soll nach einem Timeout über eval{}...