• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

ps grep problematik siehe inside

Darkyputz

Newbie
Hallo!

Habe ein problem...
Habe es geschafft nach prozessen zu suchen und wenn er nicht da iss einen befehl auszuführen...

ps w | grep nmbd | grep -v grep || /etc/rc.nmbd start

nun möchte ich aber genau das gegenteil...
also den befehl ausführen NUR WENN der prozess läuft...sonst NICHT...
was mach ich falsch??

Bitte um eure hilfe...
 

admine

Ultimate Guru
Anstelle von "||" "&&" setzen.
http://linuxseiten.kg-it.de/index.php?index=bash_umleitungen_und_pipes
 
OP
D

Darkyputz

Newbie
könntest du das mit deinem "man" etwas konkretisieren?
z.b. zeigen wie es in meinem fall aufgebaut würde`*GRINS*
 
OP
D

Darkyputz

Newbie
hmmm...iss einer von diesem "gewichte für die wasserwaage" dingern, was?
nunja...linux und ich sind erst ein sehr neues päärchen...
und das auch nur in suse 10.2 und busybox 1.4.1
daher etwas "langsam" *GRINS*
werde aber die checkproc mal anschauen...
hoffe meine busybox kennt die...
 
OP
D

Darkyputz

Newbie
ohhhje...

checkproc kann meine busybox nicht...
ausserdem iss mir nochwas aufgefallen:

habe nämlich bei meinem aufruf ein problem entdeckt...
aber ich muss 2 sachen abfragen...sorry...
kannst du mir sagen wie ich

ps w | grep ntfs-3g UND NICHT smbd | grep -v grep || /etc/rc.smbd start
kombinieren kann?

denn smbd darf nur gestartet werden wenn ntfs-3g läuft aber smbd NICHT...

also wenn ntfs-3g UND NICHT smbd läuft, dann führe rc.smbd start aus...

danke im voraus
 
So frei aus dem Handgelenk (= ungetestet):
Code:
[ $(ps -A | grep ntfs-3g | wc -l) -gt 0 -a $(ps -A | grep smbd | wc -l) -eq 0 ] && echo "1";
 
OP
D

Darkyputz

Newbie
wow...danke...aber was genau macht das ding?
und wo iss dann der platz für meinen befehl??
wäre das das echo "1"??
 

regexer

Advanced Hacker
b3ll3roph0n schrieb:
So frei aus dem Handgelenk (= ungetestet):
Code:
[ $(ps -A | grep ntfs-3g | wc -l) -gt 0 -a $(ps -A | grep smbd | wc -l) -eq 0 ] && echo "1";
Kleine Anmerkung:
grep -q hilft, das ganze zu kürzen.
 
OP
D

Darkyputz

Newbie
wo setze ich denn da ein?
ohje...ich glaub ich blick das nicht...

wäre da nu nicht langsam nen script besser?
eins das immer angestosen wird, und nachschaut ob ntfs läuft, darauf hin smbd startet und dann schaut ob der gestartet iss und daruaf hin nmbd mitnimmt??

leider iss das viel zu hoch für mich... *SNIEF*

hoffe ihr helft mir da durch

danke auf jeden fall schonmal
 
Wo ist denn jetzt genau das Problem?
Du hast zwei Lösungen auf dem Silbertablett präsentiert bekommen (die von notoxp ist die elegantere von beiden).

Ein Wenig wirst du dich schon mit dem Programmen ps, grep sowie der bash auseinander setzen müssen.

Am besten fängst du an die Kette einzeln aufzulösen.

Mal eine Blick in
man ps
man grep
und man bash
werfen.


@notoxp
Schon verstanden ...
<= grep-ManPage lesen. :wink:
 
OP
D

Darkyputz

Newbie
nun...dann werd ich mal sehen ob ich es hinbekomme irgendwie...
weil von euren beispielen hab ich nix verstanden...mausschubser halt...

aber danke
 

regexer

Advanced Hacker
Darkyputz schrieb:
weil von euren beispielen hab ich nix verstanden...mausschubser halt...
Hmmm, vielleicht zum Verständnis ein einfacheres Beispiel:
Code:
prompt> echo bla | grep a && echo treffer
bla
treffer
prompt> echo bla | grep x && echo treffer
prompt>
Soweit verstanden? Ein zusätzliches -q beim grep (q bedeutet quiet) macht nur, dass die Ausgabe von "bla" nicht gemacht wird.

grep -c macht, dass nicht die Zeilen mit Treffern ausgegeben werden sondern die Anzahl der Zeilen mit Treffern. Und die muss für smbd = 0 sein. Das bedeutet die Abfrage in den eckigen Klammern.

Wenn beides zutrifft - also ntfs-3g wurde gefunden und smbd wurde nicht gefunden - wird der echo "1" ausgeführt.

Alles klar?
 
Öhm, aber es ist doch eigentlich egal ob du ntfs-3g vor oder nach smbd startest, verfügbar wird es sowieso...
 

regexer

Advanced Hacker
b3ll3roph0n schrieb:
@notoxp
Schon verstanden ...
<= grep-ManPage lesen. :wink:
Ich hatte das nur angeführt, weil der grep -q gern übersehen wird. Damit kann man tolle Sachen machen. Zum Beispiel
Code:
if grep -q google /etc/hosts
then
   echo "google in hosts"
fi

Oft sieht man das ganze so:
Code:
grep google /etc/hosts > /dev/null
if [ $? -eq 0 ]
then
  echo "google in hosts"
fi
 
Oben