GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie man pgrep dazu bringt, die vollständigen Prozessinformationen anzuzeigen

Lösung 1:

pgrep Die Ausgabeoptionen von sind ziemlich begrenzt. Sie müssen es mit ziemlicher Sicherheit bis ps zurücksenden um die wichtigen Informationen herauszuholen. Sie könnten dies automatisieren, indem Sie eine Bash-Funktion in Ihrem ~/.bashrc verwenden .

function ppgrep() { pgrep "[email protected]" | xargs --no-run-if-empty ps fp; }

Rufen Sie dann den Befehl mit.

auf
ppgrep <pattern>

Lösung 2:

Kombiniere pgrep mit ps mit xargs !

pgrep <your pgrep-criteria> | xargs ps <your ps options> -p

Versuchen Sie es zum Beispiel

pgrep -u user | xargs ps -f -p

um eine vollständige Prozessliste von user zu erhalten . Option -u user begrenzt pgrep an den Benutzer gegeben (als Nummer oder Name), während der ps Optionen -f -p Fordern Sie eine vollständige Formatliste für die ausgewählte PID an.

Es ist schön, dass Sie die erste Zeile mit den Spaltennamen beibehalten. grep löscht immer die Spaltennamen.

Lösung 3:

Im Folgenden erhalten Sie nur PID + vollständige Befehlszeile. Für "alle Infos ps tut", siehe andere Antworten...

Die meisten Linux verwenden procps-ng. Seit 3.3.4 (veröffentlicht 2012), pgrep -a (--list-full ) zeigt die vollständige Befehlszeile.
Hinweis:Standardmäßig vergleicht pgrep nur das von Ihnen angegebene Muster mit dem Namen der ausführbaren Datei. Wenn Sie mit der vollständigen Befehlszeile übereinstimmen möchten (wie es grepping ps tut), fügen Sie den -f hinzu (--full )-Option.

In älteren Versionen (einschließlich des ursprünglichen procps-Projekts) -l Option zeigte Informationen, aber ihr Verhalten war unterschiedlich:

  • pgrep -fl hat das Muster mit der vollständigen Befehlszeile abgeglichen und die vollständige Befehlszeile angezeigt.
  • pgrep -l allein stimmte nur mit dem Namen der ausführbaren Datei überein und zeigte nur den Namen der ausführbaren Datei.
    Wenn Sie keine vollständige Übereinstimmung wünschen, können Sie die vollständige Befehlszeile nicht sehen :-([https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526355#15]

Nicht sicher, welchen Code *BSD verwendet, aber ihre Manpage dokumentiert den alten -fl Verhalten.

Leider können Sie nicht einmal -fl verwenden portabel - in den letzten procps-ng, -f (--list-name ) gibt immer nur den Namen der ausführbaren Datei aus.

Lösung 4:

Linux

Für die GNU-Version von pgrep lang + unscharfe Ausgabe wird mit -af erreicht und die Zeichenfolge muss zwischen Groß- und Kleinschreibung unterscheiden (d. h. es gibt keine Option zur Unterscheidung zwischen Groß- und Kleinschreibung). ).

$ pgrep -af apache

OUTPUT:
    1748 /usr/sbin/apache2 -k start

Handbuchseite:

   -a, --list-full
       List  the  full  command line as well as the process ID.  (pgrep only.)

   -f, --full
       The pattern is normally only matched against the process name.  
       When -f is set, the full command  line is used.

MacOS

Unter OSX (und folglich auch unter BSD) -l (lange Ausgabe ) in Kombination mit -f (Abgleich mit vollständigen Argumentlisten ) zeigt den vollständigen Befehl (-i fügt Groß-/Kleinschreibung hinzu):

$ pgrep -fil ssh

OUTPUT:
    33770 ssh: [email protected] [mux] t

Die Manpage:

 -l          Long output.  For pgrep, print the
             process name in addition to the
             process ID for each matching
             process.  If used in conjunction
             with -f, print the process ID and
             the full argument list for each
             matching process.  For pkill, dis-
             play the kill command used for
             each process killed.

Lösung 5:

Verwenden Sie die Option -v für grep - es gibt alles zurück, ABER das angeforderte Muster.

ps -ef | grep <process> | grep -v grep

Linux
  1. Wie bekomme ich die Prozess-ID des Hintergrundprozesses?

  2. So erhalten Sie einen untergeordneten Prozess aus einem übergeordneten Prozess

  3. Wie bekomme ich nur die Prozess-ID unter Angabe des Prozessnamens in Linux?

  4. So erhalte ich die Anzeigenummer, die mir von X zugewiesen wurde

  5. Wie bekomme ich nur alle laufenden Prozess-IDs?

So zeigen Sie Prozessinformationen mit Procs unter Linux an

So zeigen Sie PPIDs unter Linux an

So erhalten Sie den Dateinamen aus dem vollständigen Pfad in Linux

So zeigen Sie Linux-CPU-Informationen mit CPUFetch an

So erhalten Sie die CPU-Auslastung eines einzelnen Prozesses in Linux

Wie erhalte ich die URL des aktuellen SVN-Repos?