Gibt es eine Möglichkeit pgrep
, mir alle Informationen zu jedem Vorgang zu geben, der ausgeführt ps
wird? Ich weiß , ich kann Rohr ps
durch , grep
aber das ist eine Menge Tipparbeit und es gibt mir auch die grep
Verfahren selbst , das will ich nicht.
25
function ppgrep() { pgrep "$@" | xargs ps fp 2> /dev/null; }
Wenn keine Prozesse mit Ihrer Suche übereinstimmen, wird eine ganzeps
Megilla ausgegeben.ps
ein Bindestrich für die Flags benötigt:function ppgrep() { pgrep "$@" | xargs ps -fp 2> /dev/null; }
-r
die den Befehl nur dann ausführt, wenn sie eine Liste erhalten hat.ps fp $(pgrep -d, "$@")
Kombinieren Sie
pgrep
mitps
mitxargs
!Zum Beispiel versuchen
um eine vollständige Prozessliste von zu erhalten
user
.Schön, dass Sie die erste Zeile mit den Spaltennamen behalten.
grep
löscht immer die Spaltennamen.quelle
Im Folgenden wird nur die vollständige PID + -Befehlszeile angezeigt. Für "all the info
ps
does", siehe andere Antworten ...Die meisten Linux- Betriebssysteme verwenden procps-ng . Seit 3.3.4 (veröffentlicht im Jahr 2012) zeigt
pgrep -a
(--list-full
) die vollständige Befehlszeile.Hinweis: Standardmäßig vergleicht pgrep nur das von Ihnen angegebene Muster mit dem Namen der ausführbaren Datei. Wenn Sie eine Übereinstimmung mit der vollständigen Befehlszeile erzielen möchten (wie bei grepping ps), fügen Sie die Option
-f
(--full
) hinzu.In älteren Versionen (einschließlich des ursprünglichen procps- Projekts)
-l
zeigte die Option Informationen an, aber das Verhalten war unterschiedlich:pgrep -fl
Das Muster wurde mit der vollständigen Befehlszeile abgeglichen und die vollständige Befehlszeile angezeigt.pgrep -l
Alleine stimmt nur mit dem Namen der ausführbaren Datei überein und zeigt nur den Namen der ausführbaren Datei an.Wenn Sie keine vollständige Übereinstimmung wünschen, wird die vollständige Befehlszeile nicht angezeigt :-( [ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526355#15 ]
Ich bin nicht sicher, welchen Code * BSD verwendet, aber die Manpage dokumentiert das alte
-fl
Verhalten.Leider können Sie es nicht einmal
-fl
portabel verwenden - in neueren procps-ng gibt-f
(--list-name
) immer nur den Namen der ausführbaren Datei aus.quelle
Linux
Für die GNU-Version wird
pgrep
der-i
(case-insensitivity) nicht unterstützt, und Long + Fuzzy-Ausgabe wird mit erreicht-af
.Manpage :
Mac OS
Unter OSX (und folglich unter BSD)
-l
( lange Ausgabe ) wird in Kombination mit-f
( Übereinstimmung mit vollständigen Argumentlisten ) der vollständige Befehl angezeigt (-i
Groß- / Kleinschreibung wird nicht berücksichtigt):Die Manpage :
quelle
Verwenden Sie die Option -v für grep - sie gibt alles zurück, ABER das angeforderte Muster.
quelle
pgrep -u user | xargs ps -f -p
Ich glaube nicht, dass dies der Fall ist. Die meisten Informationen, die Sie erhalten können, sind der Name und die Prozess-ID, wenn Sie die Option -l für pgrep verwenden.
ps unterstützt alle Arten von Formatierungsoptionen, daher würde ich nur einen Alias für das erstellen, was Sie für die Eingabe speichern möchten. Eine einfache Möglichkeit, den grep-Prozess von der Ausgabe auszuschließen, besteht darin, eine zusätzliche Pipe
grep -v grep
einzuschließen, um alle grep-Prozesse auszuschließen.quelle
Um den
grep
Prozess zu eliminieren , können Sie Klammern als Teil Ihres Musters verwenden:Sie können dies mit
ps
und tunpgrep
:quelle
Dies wird Ihnen helfen, denke ich:
ps auxww
quelle