Springe zum Hauptinhalt

Bourne
next up previous contents
Next: Über dieses Dokument ... Up: Beispiele für Shell-Programmierung Previous: Primitive Turbo-C-Variante

Anzeigen von Prozeß-Hierarchien

  • Schreiben Sie ein Script, das alle Vorfahren eines Prozesses anzeigt. Die Nummer des Prozesses wird dem Script als Argument übergeben. Für jeden Prozeß sind folgende Angaben anzuzeigen: PID, PPID, UID, TTY und das vollständige Kommando.
    #!/bin/sh
    #
    # Prozessangaben anzeigen
    #
    # Aufruf: proz <prozess_id>
    #
    ps -elf >/tmp/pro$$
    a=$1
    if test $a -lt 0
    then
        a=`expr $a '*' -1`
    else
        echo "PID    PPID    UID    TTY    CMD"
    fi
    trap "rm /tmp/pro$$; exit" 2
    (
    while read n
    do
        x=`echo $n | cut -f4 -d' '`
        if test "$x" -eq "$a"
        then
        # die Feldnummern (fuer cut -f) sind vom Listenformat der
        # ps-Implementierung abhaengig 
            p=`echo $n | cut -f4 -d' '`
            pp=`echo $n | cut -f5 -d' '`
            u=`echo $n | cut -f3 -d' '`
            t=`echo $n | cut -f12 -d' '`
            c=`echo $n | cut -f14- -d' '`
            echo "$p    $pp    $u    $t    $c"
            if test $pp -ne 0
            then
                ./proz -$pp
            fi
            break
        fi
    done
    ) </tmp/pro$$
    rm /tmp/pro$$