2017-09-05 4 views
1

Ich verwende ps, um alle Prozesse auf dem Rechner aufzulisten, mit dem ich verbunden bin, suche nach meinen eigenen Prozessen und drucke dann die Anzahl der laufenden Prozesse. so wie:Verwenden von grep und wc zum Suchen und Zählen übereinstimmender Prozesse

ps -Af | grep '^mkuhlman' | wc -l

Problem ist, gegen die aktuelle Liste der Prozesse überprüft, renne ich nur 8, aber wc listet 9 verarbeitet. Was mache ich falsch?

Um zu klären, suche ich nicht nach Übereinstimmungen mit Prozessen, sondern passt zu meinem eigenen Benutzernamen.

+2

'ps .. | grep '^ [m] kuhlman' | wc -l, obwohl der "falsche" Weg (den du jeden Tag sehen wirst) "ps .. |." ist Grep ... | grep -v grep | wc -l'. Viel Glück. – shellter

+1

Mögliches Duplikat von [Anzahl der Prozesse in Linux über die Kommandozeile finden] (https://stackoverflow.com/questions/3058137/finding-process-count-in-linux-via-command-line) – codeforester

Antwort

0

Ihre Pipeline hat ein paar Prozesse, und Sie zählen sie.

Running ps ist in Ordnung, aber Sie könnten mit pgrep glücklicher sein. Es hat eine Manpage. (Und ps -A scheint im Widerspruch zu greppen für Ihren eigenen Benutzernamen.)

+0

Leider will meine Lehrerin uns um diese spezifischen Befehle zu verwenden. Ich habe alle unsere Notizen und die Man-Pages für jeden einzelnen durchgesehen, und ich kann nicht herausfinden, wie ich es beheben kann. –

+0

Betrachten Sie 'ps -Af>/tmp/proc'. Dann brauchen Sie sich keine Gedanken über grep

0

Obwohl grep -v grep in den meisten Fällen funktionieren würde, es in der falschen Ausgabe führen kann, da es alle grep Prozesse ausschließt, nicht nur die diejenigen für das ps Kommandozeile. So konnten Sie diese stattdessen tun:

ps -Af | grep -E '^mkuhlman|__unique__' | grep -v __unique__ 

wo __unique__ eine eindeutige Zeichenfolge, die unwahrscheinlich ist, in der Befehlszeile von anderen Benutzerprozesse verwendet werden.


Siehe auch:

Verwandte Themen