Frage zu Anweisung mit mehreren Befehlen

partitionist

Erfahrenes Mitglied
Hallo Leute ich bin Linux Anfänger, mich interessiert mich die Flexible Shell, hierbei können mehrere Befehle eine Anweisung bilden wenn ich das so verstanden habe.

Bsp: ps -aux | grep mozila

Hier wird doch der STDOUT also der Ausgabestrom weitergeleitet zu grep.
Wenn grep mozila findet wird dies ausgegeben.
Ich wollte wissen ob hiermit auch WENN .. DANN ... Methode aufgerufen werden können, also z.b. WENN der Prozess xyz läuft, DANN soll dieser beendet werden.
Wie macht man sowas
 
Das kannst Du machen, dazu ist aber noch etwas mehr Feinarbeit noetig.
Mit gawk kannst Du aus dem zurueckgegebenen String die ProzessID herausholen und diese dann an kill uebergeben.
Das Problem dabei ist nur, dass in der Regel auch der ps-Aufruf in der Prozessliste angezeigt wird, sodass eigentlich immer was zurueckkommt.
Hier mal ein Beispiel:
ps x | grep cupsd hat gesagt.:
2435 ? Ss 0:01 /usr/sbin/cupsd
29955 pts/3 R+ 0:00 grep cupsd
Man koennte nun noch probieren mit einem zusaetzlichen Check sicherzustellen, dass es sich um das Programm handelt, nur ob das 100% sicher ist weiss ich nicht, und vielleicht gibt es auch eine bessere Loesung als mein nun folgender Vorschlag:
Bash:
#!/bin/sh
PSVAL=`ps x | grep cupsd`
PID=`echo $PSVAL | awk -F ' ' '{print $1}'`
PROGNAME=`echo $PSVAL | awk -F ' ' '{print $5}'`
if [ -x $PROGNAME ]; then
        kill -s kill $PID
fi
Bei der Belegung von PSVAL musst Du halt cupsd durch den gewuenschten Namen ersetzen, oder aber z.B. mit einem Uebergabeparameter arbeiten.
 
Zurück