it-swarm.com.de

Linux/Bash, Verwenden von ps -o, um den Prozess mit einem bestimmten Namen abzurufen?

Ich versuche, den Befehl ps -o zu verwenden, um nur bestimmte Informationen über Prozesse zu erhalten, die einem bestimmten Namen entsprechen. Ich habe jedoch einige Probleme mit diesem Thema. Wenn ich versuche, dies auch nur zum Abrufen aller Prozesse zu verwenden, gibt es nur eine Teilmenge dessen zurück, was ein normaler ps -ef zurückgeben würde (es gibt nicht annähernd die gleiche Anzahl von Ergebnissen zurück so dass es nicht alle laufenden Prozesse zurückgibt)

ps -ef -o pid,time,comm

Ich möchte so etwas ausprobieren (unten), aber das ps -o verwenden, um nur bestimmte Informationen daraus zu erhalten (nur die PID)

ps -ef |grep `whoami`| grep firefox-bin

Wir freuen uns über jeden Rat, wie Sie dies richtig machen, danke 

57
Rick

Dadurch erhalten Sie die PID eines Prozesses anhand des Namens:

pidof name

Die können Sie dann wieder an ps anschließen, um mehr Details zu erhalten:

ps -p $(pidof name)
92
Alex Howansky

Dies ist zwar ein bisschen alt, aber ich schätze, Sie möchten:

ps -o pid -C bash

BEARBEITEN: Abhängig von der Art der Ausgabe, die Sie erwarten, wäre pgrep eleganter. Dies ist meines Wissens Linux-spezifisch und führt zu einer ähnlichen Ausgabe wie oben. Zum Beispiel:

pgrep bash
24
h7r
ps -fC PROCESSNAME

ps und grep ist eine gefährliche Kombination - grep versucht, alles auf jeder Zeile zusammenzubringen (also das allzu übliche: grep -v grep hack). ps -C verwendet grep nicht, es verwendet die Prozesstabelle für eine genaue Übereinstimmung. So erhalten Sie eine genaue Liste mit: ps -fC sh, anstatt jeden Prozess mit sh irgendwo in der Zeile zu finden.

10
Gerald Hughes

Manchmal müssen Sie den Prozess nach Namen sortieren.

ps aux | grep simple-scan

Beispielausgabe:

simple-scan  1090  0.0  0.1   4248  1432 ?        S    Jun11   0:00
4
user3751385

Entschuldigung, viel zu spät für die Party, aber ich füge hier hinzu, dass Sie dies tun könnten, wenn Sie Prozesse erfassen möchten, deren Namen mit Ihrer Suchzeichenfolge identisch sind

pgrep -x PROCESS_NAME

-x          Require an exact match of the process name, or argument list if -f is given.
             The default is to match any substring.

Dies ist äußerst nützlich, wenn Ihr ursprünglicher Prozess untergeordnete Prozesse erstellt hat (möglicherweise Zombie bei der Abfrage), die den Namen des ursprünglichen Prozesses in seinem eigenen Namen voranstellen und Sie versuchen, sie von Ihren Ergebnissen auszuschließen. Es gibt viele UNIX-Daemons, die dies tun. Mein erfolgreiches Beispiel ist ninja-dev-sync .

0
Spade