Re: Grep und regex
Am Freitag, 7. November 2003 20:29 schrieb Thorsten Haude:
> Moin,
>
> * Andreas Schmidt <andy@space.wh1.tu-dresden.de> [2003-11-07 10:06]:
> >bin gerade ueber ein Problem mit meinen regular expressions bei grep
> >gestolpert. Wollte in der Ausgabe von ps nach einer bestimmten pid
> >suchen:
> >
> > PROC=`cat pid`
> > ps ax | grep "^$PROC"
> >
> >Das ganze funktionierte auch eine Weile -- bis auf einmal $PROC nur
> >vierstellig war. Da es auch fuenfstellige pids gab und die Ausgabe
> >rechtsbuendig ist (vor pid also white space war), wurde nichts mehr
> >gefunden.
>
> Ich kann Dir nicht folgen. In Zeile 1 schreibst Du eine PID in die
> Variable, richtig? Dann wirst Du in Zeile zwei diese PID auch finden.
> Wo siehst Du, daß die Zahl der Ziffern ins Spiel kommt.
>
> Ich würde es allerdings so machen:
> ps -ef | grep `cat pid`
jan@pennywise:~$ cat pid
398
jan@pennywise:~$ ps -ef | grep `cat pid`
root 398 1 0 17:22 ? 00:00:00 /usr/sbin/apache
www-data 407 398 0 17:22 ? 00:00:00 /usr/sbin/apache
www-data 408 398 0 17:22 ? 00:00:00 /usr/sbin/apache
www-data 409 398 0 17:22 ? 00:00:00 /usr/sbin/apache
www-data 410 398 0 17:22 ? 00:00:00 /usr/sbin/apache
www-data 411 398 0 17:22 ? 00:00:00 /usr/sbin/apache
www-data 825 398 0 20:00 ? 00:00:00 /usr/sbin/apache
www-data 840 398 0 20:41 ? 00:00:00 /usr/sbin/apache
www-data 841 398 0 20:41 ? 00:00:00 /usr/sbin/apache
www-data 842 398 0 20:41 ? 00:00:00 /usr/sbin/apache
Das Problem ist weniger das Finden als das Finden der gesuchten PID. Da
kommt auch die Stellenzahl der PID ins Spiel: Wenn Du z. B. nach der
PID 3 mit Deiner Methode suchst, kriegst Du wohl noch ein paar mehr
unzutreffende Treffer.
BTW - ist mir grad eingefallen. Mit
ps --no-headers -p `cat pid`
kriegt man ganz ohne grep den gewünschten Prozess.
Jan
Reply to: