Der Befehl ps ruft die Prozesstabelle auf, einen Datensatz, der die derzeit laufenden Prozesse auf einem System zusammenfasst. Wenn der Befehl ohne Option ausgeführt wird, zeigt er die von der aktuellen Shell ausgeführten Prozesse mit Details wie der PID, dem mit dem Prozess verknüpften Terminal, der kumulierten CPU-Zeit und dem Befehl an, der den Prozess gestartet hat. Es können jedoch verschiedene Optionen zusammen mit dem Befehl verwendet werden, um die angezeigten Felder oder Prozesse zu filtern.
Syntax
Die Syntax des ps-Befehls lautet:
$ ps [options]
Syntaxstile für Befehlsoptionen
Der Befehl ps unterstützt drei verschiedene Arten der Befehlsoptionssyntax:Unix-Stil (mit vorangestelltem Bindestrich), GNU-Stil (mit zwei vorangestellten Bindestrichen) und BSD-Stil (ohne Bindestrich). Das Mischen dieser Stile führt nicht immer zu den gleichen Ergebnissen. Beispielsweise gibt der Befehl ps (im BSD-Stil) alle Prozesse mit einem steuernden Terminal aus, einschließlich der Sitzungsleiter (das erste Mitglied einer Gruppe von Prozessen). Es druckt auch den Status jedes Prozesses sowie den vollständigen Befehl (einschließlich Optionen) jedes Prozesses. Der Befehl ps -a (im Unix-Stil) gibt auch alle Prozesse mit einem steuernden Terminal aus, enthält jedoch weder Sitzungsleiter noch den Status jedes Prozesses noch den vollständigen Befehl jedes Prozesses.
ps-Befehlsoptionen
Der Befehl ps unterstützt mehrere Optionen. Einige der bekanntesten Optionen sind hier aufgelistet.
Option | Früher |
---|---|
ein | Alle vom Benutzer ausgelösten Prozesse auflisten. |
-e | Alle Prozesse auflisten. |
-l | Listen Sie Prozesse mit einem langen Listenformat auf. |
du | Prozesse zusammen mit dem Benutzernamen und der Startzeit auflisten. |
r | Prozesse ausschließen, die derzeit nicht ausgeführt werden. |
x | Prozesse ohne Terminal einschließen. |
T | Prozesse ausschließen, die von einem anderen als dem aktuellen Terminal gestartet wurden. |
-U {Benutzername} | Zeigt die Prozesse basierend auf dem angegebenen Benutzer an. |
-p {PID} | Nur den Prozess anzeigen, der der angegebenen PID zugeordnet ist. |
-C {Befehl} | Alle Prozesse nach Befehlsnamen anzeigen. |
–tty {Terminalnummer} | Alle Prozesse anzeigen, die auf dem angegebenen Terminal laufen. |
ps-Befehlsbeispiele
1. Um den Zombie-Prozess zu sehen:
# ps aux | awk '{ print $8 " " $2 }' | grep -w Z
2. Zombie-Prozesse auflisten:
# ps -el | grep Z
3. Um die laufenden Prozesse zu finden/aufzulisten:
# ps -r
4. Prozesse für einen bestimmten Benutzer suchen:
# ps -U apache # ps U apache # ps -u apache
5. Um jeden Prozess zu sehen, der als Root (echte und effektive ID) im Benutzerformat läuft:
# ps -U root u
6. Um die Prozesse zu finden/aufzulisten, die test.pl in ihrer Befehlsausführung haben:
# ps -f -C test.pl
7. Listen Sie die Prozesse basierend auf PIDs auf:
# ps -f --ppid 9576
8. pgrep, pkill – Suchen oder signalisieren Sie Prozesse basierend auf Namen und anderen Attributen:
# pgrep 1234 # pkill 1234 OR # pkill httpd
9. Sortieren der ps-Ausgabe:
# ps -eo uname,pid,ppid,nlwp,pcpu,pmem,psr,start_time,tty,time,args --sort -pcpu,-pmem
10. So drucken Sie einen Prozessbaum:
# ps -ejH # ps axjf
11. Drucken Sie nur die Prozess-IDs von syslogd:
# ps -C syslogd -o pid=
12. Drucken Sie nur den Namen von PID 42:
# ps -p 42 -o comm=
13. Listen Sie den Prozess basierend auf der UID und den Befehlen auf:
# ps -f -u wwwrun,postfix
14. Listen Sie die Prozesse basierend auf PIDs oder PPIDs auf:
# ps -f --ppid 9576
15. Prozesse in einer Hierarchie auflisten:
# ps -e -o pid,args --forest
16. Verstrichene Wandzeit für Prozesse auflisten:
# ps -p 1,29675 -o pid,etime=
17. Um die Prozesshierarchie aufzulisten:
# ps -e -o pid,args --forest # ps axjf # ps -ejH
18. Alle Threads für einen bestimmten Prozess auflisten:
# ps -C java -L -o pid,tid,pcpu,state,nlwp,args
19. So zeigen Sie einen Prozessbaum an:
# pstree
20. So listen Sie die verstrichene Wandzeit für Prozesse auf:
# ps -p 1,29675 -o pid,etime=
21. So erhalten Sie die Startzeit des Prozesses:
# ps -p PID -o lstart=
22. Zeigen Sie vollständige Informationen über jeden der derzeit laufenden Prozesse an:
# ps -ef | grep
23. So erhalten Sie Informationen zu Threads:
# ps -eLf # ps axms
24. So erhalten Sie Sicherheitsinformationen:
# ps -eo euser,ruser,suser,fuser,f,comm,label # ps axZ # ps -eM
25. Um jeden Prozess mit einem benutzerdefinierten Format zu sehen:
# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm # ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm # ps -eopid,tt,user,fname,tmout,f,wchan
26. Alle Threads für einen bestimmten Prozess auflisten:
# ps -C java -L -o pid,tid,pcpu,state,nlwp,args
27. Listen Sie alle laufenden Prozesse auf, einschließlich der vollständigen Befehlszeichenfolge:
# ps auxww
28. Suchen Sie nach einem Prozess, der mit einer Zeichenfolge übereinstimmt:
# ps aux | grep string
29. Listen Sie alle Prozesse des aktuellen Benutzers im extra vollständigen Format auf:
# ps --user $(id -u) -F
30. Alle Prozesse des aktuellen Benutzers als Baum auflisten:
# ps --user $(id -u) f
31. Holen Sie sich die Eltern-PID eines Prozesses:
# ps -o ppid= -p pid
32. Prozesse nach Speicherverbrauch sortieren:
# ps --sort size