# ps aux | grep blahr ---> grep aus der Ausgabe rausnehmen

## doedel

Ich habe gerade ein kleines Problem. Ich bastle mir ein Webinterface für den Streamripper auf  meinem Musik-Player-PC.

Nun will ich natürlich rausfinden, ob der läuft, ganz einfach mit ps aux | grep streamripper. Im php Script würde das dann so aussehen:

```

$bla = exec("ps aux | grep streamripper");

if(bla != '') { echo "streamripper ist aus"; }

```

Doch der wird immer als an gemeldet, da die Ausgabe der Befehlszeile so aussieht:

```

player@player:~$ ps aux | grep streamripper

root      4074  0.6  1.0  14004  2644 pts/0    S<l+ 16:55   0:01 streamripper radio.bla.blubb:12345

player    4100  0.0  0.2   3140   768 pts/4    S<+  16:58   0:00 grep streamripper

```

Selbst wenn er aus ist, kommt das nicht "Nichts" bei raus, da immer der grep Prozess mit angezeigt wird.

Lässt sich das in der einen Befehlszeile irgendwie hinbiegen oder muss ich die Ausgabe von ps aux erstmal umleiten und dann rausgreppen? Oder gar ganz anders?

Die Möglichkeit das einfach unter einem bestimmten User XYZ laufen zu lassen, gibts nicht, da das von verschiedenen Usern aus gestartet/gestoppt werden soll. Das wäre mir dann zu aufwendig das auf einen User umzubasteln.

Ich hoffe, da kann mir einer von euch helfen.

----------

## papahuhn

```
ps aux | grep irgendwas | grep -v grep
```

----------

## disi

Ich wuerde einfach nochmal greppen  :Smile: 

```
disi@disi-openvz ~ $ ps aux | grep ssh-agent | grep -v grep

disi     17010  0.0  0.0   3656   520 ?        Ss   Feb27   0:00 ssh-agent
```

//edit: grr zu langsam

----------

## Knieper

Das geht auch einfacher. Such doch einfach nur nach dem Kommando, zB.:

```
ps -C thttpd
```

Du kannst auch das Format von ps selbst bestimmen, zB.:

```
ps -o pid,cmd -C thttpd
```

----------

## doedel

Bei ps ist wiederum das Problem, dass auch immer eine Ausgabe kommt, sie soll nur kommen, wenn der streamripper läuft.

Das mit dem grep -v ist perfekt  :Smile: 

Vielen Dank!

----------

## Necoro

statt "aux" einfach "-e" nehmen?

```
necoro@Zakarumiy ~ % ps -e | grep mpd

 3310 ?        00:03:31 mpd

necoro@Zakarumiy ~ % ps -e | grep moo
```

----------

## Knieper

 *doedel wrote:*   

> Bei ps ist wiederum das Problem, dass auch immer eine Ausgabe kommt, sie soll nur kommen, wenn der streamripper läuft.

 

Das stimmt log'weise nicht. Wenn Du drüber nachgedacht hättest, wäre es Dir selbst aufgefallen:

```
>ps -o pid= -C zsh

 3134

>echo rv: $?

rv: 0

>ps -o pid= -C zshe

>echo rv: $?

rv: 1

```

----------

## mv

```
pgrep streamripper
```

genügt nicht?

----------

## Knieper

Gehört zu procps und ist nicht in POSIX...

----------

## noclear2000

Diese Thread ist schon soooo alt, aber hätte es nicht einfach das getan: 

```

ps aux | grep [s]treamripper

```

?

----------

## musv

Erklär mal bitte, was die Klammern hier bedeuten.

----------

## noclear2000

 *musv wrote:*   

> Erklär mal bitte, was die Klammern hier bedeuten.

 

 [s]treamripper ist (ein sehr einfacher) "Regulärer Ausdruck" (engl., kurz regex) mit der Bedeutung für grep von "Suche ein 's' gefolgt von der Zeichenfolge 'treamripper' und macht damit das gleiche wie ohne die Klammern. Der Unterschied ist aber, dass im ps Output nun die Klammern mit drin sind und die regex das nicht mehr findet, den sie sucht ja nicht nach dem Begriff mit den Klammern drin sondern nach streamripper, was es nicht mehr findet (weil es mit Klammern im output ist). 

War doppeltgemoppelt - hoffentlich verständlich...?

----------

## musv

Hab's kapiert. grep findet sich selbst nicht, da es nicht nach Klammern sucht, weil die Regexe sind. 

Wirkt wie ein hässlicher Workaround, der erstaunlich gut funktioniert.

----------

