grep: write error: Broken pipe

24/04/2008 - 10:28 von Thomas Guettler | Report spam
Hallo,

seit einem Serverupdate (schnellere Hardware) kommt es bei folgender
Zeile:

PID=`ps --cols 300 ax | grep "$1" | grep -v "grep" | head -1 | /usr/bin/awk '{print $1}'`

zu diesem Fehler:

grep: write error: Broken pipe

Leider làsst sich die Fehlermeldung nicht reproduzieren. Sie tritt aber 2-3 mal pro Tag auf.

Wenn grep nicht schreiben kann, gibt es zwei Verdàchtige, die zu früh
stdin schließen:
1. grep -v "grep"
2. head -1

Mit beiden Befehlen habe ich solche Probleme noch nicht gesehen.

Vielleicht liegt es auch am Timing. Der neue Rechner hat vier Prozessoren.

SIGPIPE: http://en.wikipedia.org/wiki/SIGPIPE

Vielleicht erhàlt der Prozess nicht früh genug das Signal SIGPIPE und
erhàlt dann beim Schreiben nach stdout EPIPE ...

Gibt es einen Trick um den Fehler zu reproduzieren?

Gruß,
Thomas


uname -a


Linux ardenne 2.6.22.17-0.1-default #1 SMP 2008/02/10 20:01:04 UTC x86_64 x86_64 x86_64 GNU/Linux


bash --version


GNU bash, version 3.2.25(1)-release (x86_64-suse-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.


grep --version


GNU grep 2.5.2

Thomas Guettler, http://www.thomas-guettler.de/
E-Mail: guettli (*) thomas-guettler + de
 

Lesen sie die antworten

#1 Heike C. Zimmerer
24/04/2008 - 10:37 | Warnen spam
Thomas Guettler writes:

Hallo,

seit einem Serverupdate (schnellere Hardware) kommt es bei folgender
Zeile:

PID=`ps --cols 300 ax | grep "$1" | grep -v "grep" | head -1 | /usr/bin/awk '{print $1}'`

zu diesem Fehler:

grep: write error: Broken pipe



Kann es sein, dass ein anderer 'head' verwendet wird? Die Syntax dort
ist head -n 1, head -1 unterstützen alle.

Du könntest auch kürzer

ps ... | awk "/$1/"' {print $1; exit}'

schreiben oder pidof oder pgrep nehmen.

Ähnliche fragen