Anzeige:
Ergebnis 1 bis 7 von 7

Thema: ps und grep: warum findet grep sich selbst nicht immer?

  1. #1
    Registrierter Benutzer
    Registriert seit
    Aug 2003
    Beiträge
    126

    ps und grep: warum findet grep sich selbst nicht immer?

    Hi,

    ist jetzt kein ernsthaftes Problem, ich frage nur aus Neugier:

    Wenn ich ein "ps ax | grep <prozessname>" mache und der Prozess <prozessname> läuft, bekomme ich als Ausgabe die Zeile aus dem ps-output, die eben diesen Prozessnamen enthält. Manchmal (aber eben nicht immer) bekomme ich auch noch eine Zeile, die das "grep <prozessname>" enthält. Das hab ich bis jetzt auf allen möglichen Distries gesehen, und auch von der Systemlast scheint's nicht abzuhängen. Ich vermute, das es irgendwie mit der Pipe zusammenhängt und mit der Zeit, die grep braucht, um den ps-output zu durchsuchen.

    Hat jemand eine genaue Erklärung, warum grep sich manchmal im ps-output findet und manchmal nicht?

    Gruß,

    Philipp

  2. #2
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Beiträge
    236
    Wahrscheinlich gibt's eine Art Pipe-Cache. Das Füllen dieser läuft dann mit dem Start von Grep um die Wette, eine sog. Race-Condition.
    So was soll bei Shellskripten schon mal vorkommen.

  3. #3
    Registrierter Benutzer
    Registriert seit
    Aug 2003
    Beiträge
    126
    Ah ja. Der Pipe-Cache ist dann wohl Teil der Shell (in meinem Fall bash) und hat nichts mit dem Kernel, dem ps-Programm oder dem grep-Programm zu tun, richtig? Das würde bedeuten, das es sich um eine Eigenart (Unzulänglichkeit?) der bash handelt. Kennt jemand dieses Phänomen auch von anderen Shells?

    Gruß,

    Phil

  4. #4
    Agent (Clone #17264) Avatar von Jasper
    Registriert seit
    Jul 2002
    Ort
    The Matrix (Reloaded)
    Beiträge
    3.073
    Original geschrieben von lx_bastler
    Wahrscheinlich gibt's eine Art Pipe-Cache. Das Füllen dieser läuft dann mit dem Start von Grep um die Wette, eine sog. Race-Condition.
    So was soll bei Shellskripten schon mal vorkommen.
    'ulimit -p' gibt die grösse der pipes aus.


    -j
    "Oh my God!" "Smith will suffice" (Agent Smith, Matrix)
    "The first rule of holes is: when you find yourself in one, stop digging." (PJ, Groklaw)

  5. #5
    Registrierter Benutzer
    Registriert seit
    Aug 2003
    Beiträge
    126
    Hm, hab das mal mittels Script mit verschiedenen Shells getestet: ash, bash, tcsh und zsh. Alle zeigen dasselbe verhalten. Also doch nicht Shell- sondern Betriebssystemspezifisch?

    Gruß,

    Phil

  6. #6
    Agent (Clone #17264) Avatar von Jasper
    Registriert seit
    Jul 2002
    Ort
    The Matrix (Reloaded)
    Beiträge
    3.073
    Original geschrieben von variant
    Hm, hab das mal mittels Script mit verschiedenen Shells getestet: ash, bash, tcsh und zsh. Alle zeigen dasselbe verhalten. Also doch nicht Shell- sondern Betriebssystemspezifisch?
    die puffergrösse der pipes hat nichts mit der shell zu tun. das ist os-kram.


    -j
    "Oh my God!" "Smith will suffice" (Agent Smith, Matrix)
    "The first rule of holes is: when you find yourself in one, stop digging." (PJ, Groklaw)

  7. #7
    Registrierter Benutzer
    Registriert seit
    Aug 2003
    Beiträge
    126
    OK, danke mal. Wieder was gelernt. Ich versteh zwar nicht alle Zusammenhänge, speziell das mit den Race-Conditions, aber ich weiß auch nicht, wie Pipes intern gehandelt werden. Aber das läßt sich sicher googeln

    Eine Frage hab ich noch: ist das nur unter Linux so, oder auch unter Unix (Solars/BSD/AIX etc.)?

    Gruß,

    Phil

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •