2010-09-24 4 views
53

Ich versuche, den Befehl ps -o zu verwenden, um nur bestimmte Informationen über Prozesse zu erhalten, die mit einem bestimmten Namen übereinstimmen. Allerdings habe ich einige Probleme dabei, wenn ich versuche, dies auch nur zu verwenden, um alle Prozesse zu erhalten, so gibt es nur eine Teilmenge von was eine normale ps -ef zurückgeben würde (es gibt nicht fast die gleiche Anzahl von Ergebnissen so Rückkehr seiner nicht alle laufenden Prozesse)Linux/Bash, mit ps -o, um den Prozess nach bestimmten Namen zu bekommen?

ps -ef -o pid,time,comm 

ich mag so etwas versuchen (unten), aber die ps -o zu integrieren, um nur bestimmte Informationen zu erhalten von ihm (nur die PID)

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

Jeder Rat wird geschätzt, wie man das richtig macht, danke

Antwort

81

Dies wird Ihnen die PID eines Prozesses mit Namen erhalten:

pidof name 

die Sie dann in ps für mehr Detail stecken zurück:

ps -p $(pidof name) 
+5

'pgrep' kann auch verwendet werden, aber es gibt einige Unterschiede in der Art und Weise Sie arbeiten. Auf meinem System, auf dem apache2 läuft, findet 'pidof' zum Beispiel" apache2 ", aber nicht" apache ", während' pgrep' es auf jede Weise findet. –

+3

OS X Leute: 'brew install pidof' – rogerdpack

+0

' pidof' ist nicht von POSIX standardisiert und ist daher nicht garantiert, wie OS X nicht mit 'pidof' belegt. – Wyatt8740

22

Das ist ein bisschen alt, aber ich denke, was Sie wollen, ist: ps -o pid -C process_name, zum Beispiel:

ps -o pid -C bash 

EDIT: Je nach Einstellung der Art der Ausgabe, die Sie erwarten, pgrep eleganter wäre. Dies ist in meinem Wissen Linux-spezifisch und ergibt ähnliche Ergebnisse wie oben. Zum Beispiel:

pgrep bash 
+3

'pgrep' ist nicht Linux-spezifisch, da es mit Solaris eingeführt wurde und später unter Linux und * BSDs neu implementiert wurde. – jlliagre

+0

pgrep ist das Beste, was ich in meinem ganzen Leben gesehen habe. gj h7 – codyc4321

8
ps -fC PROCESSNAME 

ps und grep eine gefährliche Kombination ist - grep versucht, alles in jeder Zeile zu entsprechen (also die allzu häufig: grep -v grep Hack). ps -C verwendet grep nicht, sondern verwendet die Prozesstabelle für eine exakte Übereinstimmung. So erhalten Sie eine genaue Liste mit: ps -fC, die lieber jeden Prozess mit sh irgendwo auf der Linie findet.

+2

Dies funktioniert jedoch nicht auf Mac. Der Mac scheint nicht auf die gleiche Weise '-C' zu verwenden, weißt du, wie man das auf Mac macht? Vielen Dank! – Noitidart

2

Manchmal müssen Sie den Prozess mit Namen grep - in diesem Fall:

ps aux | grep simple-scan 

Beispiel Ausgabe:

simple-scan 1090 0.0 0.1 4248 1432 ?  S Jun11 0:00 
Verwandte Themen