Ps/Anwendung: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| Zeile 6: | Zeile 6: | ||
! Option !! Beschreibung | ! Option !! Beschreibung | ||
|- | |- | ||
| [https://manpages.debian.org/trixie/procps/ps.1.de.html#a a] || hebt die Einschränkung »nur Sie selbst« des BSD-Stils auf, die für die Gruppe aller Prozesse gilt, wenn einige BSD-artige Optionen (ohne »-«) verwendet werden oder wenn die Einstellung der Prozessausführungsumgebung von ps BSD-ähnlich ist | | [https://manpages.debian.org/trixie/procps/ps.1.de.html#a a] || hebt die Einschränkung »nur Sie selbst« des BSD-Stils auf, die für die Gruppe aller Prozesse gilt, wenn einige BSD-artige Optionen (ohne »-«) verwendet werden oder wenn die Einstellung der Prozessausführungsumgebung von ps BSD-ähnlich ist | ||
* Die auf diese Weise ausgewählte Prozessgruppe wird zusätzlich zu den bereits auf andere Weise ausgewählten Prozessen ausgewählt | |||
* Alternativ könnte dies so beschrieben werden, dass diese Option ps veranlasst, alle Prozesse mit einem Terminal (TTY) aufzulisten, oder alle Prozesse aufzulisten, wenn dies zusammen mit der Option x verwendet wird | |||
|- | |- | ||
| [https://manpages.debian.org/trixie/procps/ps.1.de.html#A -A] || wählt alle Prozesse aus | | [https://manpages.debian.org/trixie/procps/ps.1.de.html#A -A] || wählt alle Prozesse aus | ||
* Gleichbedeutend mit -e | |||
|- | |- | ||
| [https://manpages.debian.org/trixie/procps/ps.1.de.html#a~2 -a] || wählt alle Prozesse aus, außer sowohl Sitzungsleiter (siehe [https://manpages.debian.org/trixie/manpages-de-dev/getsid.2.de.html getsid(2)]) als auch Prozesse, die keinem Terminal zugeordnet sind | | [https://manpages.debian.org/trixie/procps/ps.1.de.html#a~2 -a] || wählt alle Prozesse aus, außer sowohl Sitzungsleiter (siehe [https://manpages.debian.org/trixie/manpages-de-dev/getsid.2.de.html getsid(2)]) als auch Prozesse, die keinem Terminal zugeordnet sind | ||
|- | |- | ||
| [https://manpages.debian.org/trixie/procps/ps.1.de.html#d -d] || wählt alle Prozesse außer Sitzungsleiter aus | | [https://manpages.debian.org/trixie/procps/ps.1.de.html#d -d] || wählt alle Prozesse außer Sitzungsleiter aus | ||
|- | |- | ||
| [https://manpages.debian.org/trixie/procps/ps.1.de.html#deselect --deselect] || wählt alle Prozesse aus, außer jene, welche die angegebenen Bedingungen erfüllen (negiert die Auswahl) | | [https://manpages.debian.org/trixie/procps/ps.1.de.html#deselect --deselect] || wählt alle Prozesse aus, außer jene, welche die angegebenen Bedingungen erfüllen (negiert die Auswahl) | ||
* Gleichbedeutend mit -N | |||
|- | |- | ||
| [https://manpages.debian.org/trixie/procps/ps.1.de.html#e -e] || wählt alle Prozesse aus | | [https://manpages.debian.org/trixie/procps/ps.1.de.html#e -e] || wählt alle Prozesse aus | ||
* Gleichbedeutend mit -A | |||
|- | |- | ||
| [https://manpages.debian.org/trixie/procps/ps.1.de.html#g g] || wählt wirklich alle, selbst die Sitzungsleiter | | [https://manpages.debian.org/trixie/procps/ps.1.de.html#g g] || wählt wirklich alle, selbst die Sitzungsleiter | ||
* Dieser Schalter ist veraltet und könnte in zukünftigen Veröffentlichungen nicht mehr zur Verfügung stehen | |||
* Es wird normalerweise vom Schalter a impliziert und ist nur nützlich, wenn es in einer SunOs-Prozessausführungsumgebung ausgeführt wird | |||
|- | |- | ||
| -N || wählt alle Prozesse aus, außer jene, welche die angegebenen Bedingungen erfüllen (negiert die Auswahl) | | -N || wählt alle Prozesse aus, außer jene, welche die angegebenen Bedingungen erfüllen (negiert die Auswahl) | ||
* Gleichbedeutend mit --deselect | |||
|- | |- | ||
| T || wählt alle Prozesse aus, welche diesem Terminal zugeordnet sind | | T || wählt alle Prozesse aus, welche diesem Terminal zugeordnet sind | ||
* Gleichbedeutend mit der Option t ohne Argumente | |||
|- | |- | ||
| [https://manpages.debian.org/trixie/procps/ps.1.de.html#r r] || schränkt die Auswahl nur auf laufende Prozesse ein | | [https://manpages.debian.org/trixie/procps/ps.1.de.html#r r] || schränkt die Auswahl nur auf laufende Prozesse ein | ||
|- | |- | ||
| [https://manpages.debian.org/trixie/procps/ps.1.de.html#x x] || hebt die Einschränkung »muss ein TTY haben« des BSD-Stils auf, die für die Gruppe aller Prozesse gilt, wenn einige BSD-artige Optionen (ohne »-«) verwendet werden oder wenn die Einstellung der Prozessausführungsumgebung von ps BSD-ähnlich ist | | [https://manpages.debian.org/trixie/procps/ps.1.de.html#x x] || hebt die Einschränkung »muss ein TTY haben« des BSD-Stils auf, die für die Gruppe aller Prozesse gilt, wenn einige BSD-artige Optionen (ohne »-«) verwendet werden oder wenn die Einstellung der Prozessausführungsumgebung von ps BSD-ähnlich ist | ||
* Die auf diese Weise ausgewählte Prozessgruppe wird zusätzlich zu den bereits auf andere Weise ausgewählten Prozessen ausgewählt | |||
* Alternativ könnte dies so beschrieben werden, dass diese Option ps veranlasst, alle Prozesse aufzulisten, deren Besitzer Sie selbst sind (gleiche EUID wie ps), oder alle Prozesse aufzulisten, wenn dies zusammen mit der Option a verwendet wird | |||
|} | |} | ||
| Zeile 44: | Zeile 55: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Alle Prozess im System in der BSD-Syntax anzeigen | ; Alle Prozess im System in der BSD-Syntax anzeigen | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
ps ax | ps ax | ||
| Zeile 52: | Zeile 63: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Einen Prozessbaum ausgeben | ; Einen Prozessbaum ausgeben | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
ps -ejH | ps -ejH | ||
| Zeile 60: | Zeile 71: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Informationen zu Threads erhalten | ; Informationen zu Threads erhalten | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
ps -eLf | ps -eLf | ||
| Zeile 68: | Zeile 79: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Sicherheitsinformationen erhalten | ; Sicherheitsinformationen erhalten | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
ps -eo euser,ruser,suser,fuser,f,comm,label | ps -eo euser,ruser,suser,fuser,f,comm,label | ||
| Zeile 79: | Zeile 90: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Alle Prozesse im System, die mit Root-Rechten laufen (reale & effektive Kennung), in einem benutzerdefinierten Format anzeigen | ; Alle Prozesse im System, die mit Root-Rechten laufen (reale & effektive Kennung), in einem benutzerdefinierten Format anzeigen | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
ps -U root -u root u | ps -U root -u root u | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Alle Prozesse in einem benutzerdefinierten Format anzeigen | ; Alle Prozesse in einem benutzerdefinierten Format anzeigen | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm | ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm | ||
| Zeile 95: | Zeile 106: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Nur die Prozesskennungen (PIDs) von syslogd ausgeben | ; Nur die Prozesskennungen (PIDs) von syslogd ausgeben | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
ps -C syslogd -o pid= | ps -C syslogd -o pid= | ||
</syntaxhighlight> | </syntaxhighlight> | ||
; Nur den Namen des Prozesses mit der Kennung 42 ausgeben | ; Nur den Namen des Prozesses mit der Kennung 42 ausgeben | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
ps -q 42 -o comm= | ps -q 42 -o comm= | ||
| Zeile 110: | Zeile 121: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Oder wenn | Oder wenn pgrep verfügbar ist, ist Folgendes zu verwenden | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
pgrep -f java | pgrep -f java | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Man kann die Ausgabe an awk weiterleiten, um nur die PID zu drucken | Man kann die Ausgabe an awk weiterleiten, um nur die PID zu drucken | ||
* Zum Beispiel | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
ps -ef | grep nginx | awk '{print $2}' | ps -ef | grep nginx | awk '{print $2}' | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Frage wurde mit Redhat Linux getaggt | Funktioniert, wenn man die Ausgabe als Variable verwendet a | tr -d '\ n' muss am Ende des Befehls hinzugefügt werden | ||
Frage wurde mit Redhat Linux getaggt | |||
* Zum Erkennen eines bestimmten Java-Prozesses unter OSX, RHEL Linux und AIX ist ps -A -o pid , args | grep \ [j] ava | |||
* Dieser Befehl ignoriert den grep-Prozess und gibt einfach die PID zurück | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
ps -ef | grep -v grep | grep java | awk '{print $2}'* Kürzer: ps -ef | grep '[j]ava' | awk '{print $2}' | ps -ef | grep -v grep | grep java | awk '{print $2}'* Kürzer: ps -ef | grep '[j]ava' | awk '{print $2}' | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Man benutzt dies, um die PID zu erhalten. '''Achtung:''' wenn man die Ausgabe als Variable a | Man benutzt dies, um die PID zu erhalten. '''Achtung:''' wenn man die Ausgabe als Variable a | verwendet, muss am Ende tr -d '\ n' hinzugefügt werden | ||
=== pidof === | === pidof === | ||
| Zeile 136: | Zeile 150: | ||
Es wird eine Liste von Pids zurückgegeben, die dem Prozessnamen entsprechen | Es wird eine Liste von Pids zurückgegeben, die dem Prozessnamen entsprechen | ||
[https://linux.die.net/man/8/pidof https://linux.die.net/man/8/pidof] | [https://linux.die.net/man/8/pidof https://linux.die.net/man/8/pidof] | ||
* funktioniert solange man nicht über mehrere Instanzen verfügt (beispielsweise | * funktioniert solange man nicht über mehrere Instanzen verfügt (beispielsweise Java) | ||
adb shell procrank | grep TYPE_YOUR_PROCESS_NAME_INSTEAD | awk '{print $1}' | adb shell procrank | grep TYPE_YOUR_PROCESS_NAME_INSTEAD | awk '{print $1}' | ||
| Zeile 145: | Zeile 159: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Die Ausgabeformatierung des Befehls ist die beste Option | Die Ausgabeformatierung des Befehls ist die beste Option | ||
* Die Option -o steuert die Ausgabeformatierung | |||
KEY | * Unten sind einige Argumente aufgelistet, siehe 'man ps' für den Rest (um mehrere zu verwenden, wäre es ''-o pid, cmd, flags'') | ||
KEY LONG DESCRIPTION | |||
c cmd simple name of executable | |||
C pcpu cpu utilization | |||
f flags flags as in long format F field | |||
g pgrp process group ID | |||
G tpgid controlling tty process group ID | |||
j cutime cumulative user time | |||
J cstime cumulative system time | |||
k utime user time | |||
o session session ID | |||
p pid process ID | |||
==== awk und cut ==== | ==== awk und cut ==== | ||
| Zeile 179: | Zeile 195: | ||
* Der reguläre Ausdruck darf nicht mit den anfänglichen Leerzeichen vor kleinen Pids übereinstimmen | * Der reguläre Ausdruck darf nicht mit den anfänglichen Leerzeichen vor kleinen Pids übereinstimmen | ||
* Außerdem sollte eine PID mindestens aus einer Ziffer bestehen, nicht aus Null (Achtung: + und nicht * verwenden) | * Außerdem sollte eine PID mindestens aus einer Ziffer bestehen, nicht aus Null (Achtung: + und nicht * verwenden) | ||
Verwenden Sie den Schalter '' '-o' '', um eine Ausgabe im Cust-Format zu erhalten | Verwenden Sie den Schalter '' '-o' '', um eine Ausgabe im Cust-Format zu erhalten | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | <syntaxhighlight lang="bash" highlight="1" line copy> | ||
| Zeile 194: | Zeile 210: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
-e :Alle Prozesse auswählen | -e :Alle Prozesse auswählen | ||
-o :Format | |||
pid = Prozess-ID% p sameas pid | |||
Version vom 15. Oktober 2025, 09:12 Uhr
ps/Anwendung
Einfache Prozessauswahl
| Option | Beschreibung |
|---|---|
| a | hebt die Einschränkung »nur Sie selbst« des BSD-Stils auf, die für die Gruppe aller Prozesse gilt, wenn einige BSD-artige Optionen (ohne »-«) verwendet werden oder wenn die Einstellung der Prozessausführungsumgebung von ps BSD-ähnlich ist
|
| -A | wählt alle Prozesse aus
|
| -a | wählt alle Prozesse aus, außer sowohl Sitzungsleiter (siehe getsid(2)) als auch Prozesse, die keinem Terminal zugeordnet sind |
| -d | wählt alle Prozesse außer Sitzungsleiter aus |
| --deselect | wählt alle Prozesse aus, außer jene, welche die angegebenen Bedingungen erfüllen (negiert die Auswahl)
|
| -e | wählt alle Prozesse aus
|
| g | wählt wirklich alle, selbst die Sitzungsleiter
|
| -N | wählt alle Prozesse aus, außer jene, welche die angegebenen Bedingungen erfüllen (negiert die Auswahl)
|
| T | wählt alle Prozesse aus, welche diesem Terminal zugeordnet sind
|
| r | schränkt die Auswahl nur auf laufende Prozesse ein |
| x | hebt die Einschränkung »muss ein TTY haben« des BSD-Stils auf, die für die Gruppe aller Prozesse gilt, wenn einige BSD-artige Optionen (ohne »-«) verwendet werden oder wenn die Einstellung der Prozessausführungsumgebung von ps BSD-ähnlich ist
|
Beispiele
- Alle Prozesse im System in der Standard-Syntax anzeigen
ps -e
ps -ef
ps -eF
ps -ely
- Alle Prozess im System in der BSD-Syntax anzeigen
ps ax
ps axu
- Einen Prozessbaum ausgeben
ps -ejH
ps axjf
- Informationen zu Threads erhalten
ps -eLf
ps axms
- Sicherheitsinformationen erhalten
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM
- Alle Prozesse im System, die mit Root-Rechten laufen (reale & effektive Kennung), in einem benutzerdefinierten Format anzeigen
ps -U root -u root u
- Alle Prozesse in einem benutzerdefinierten Format anzeigen
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 -Ao pid,tt,user,fname,tmout,f,wchan
- Nur die Prozesskennungen (PIDs) von syslogd ausgeben
ps -C syslogd -o pid=
- Nur den Namen des Prozesses mit der Kennung 42 ausgeben
ps -q 42 -o comm=
Bestimmte PID ausgeben
ps -ef | grep '[j]ava'
Oder wenn pgrep verfügbar ist, ist Folgendes zu verwenden
pgrep -f java
Man kann die Ausgabe an awk weiterleiten, um nur die PID zu drucken
- Zum Beispiel
ps -ef | grep nginx | awk '{print $2}'
Funktioniert, wenn man die Ausgabe als Variable verwendet a | tr -d '\ n' muss am Ende des Befehls hinzugefügt werden
Frage wurde mit Redhat Linux getaggt
- Zum Erkennen eines bestimmten Java-Prozesses unter OSX, RHEL Linux und AIX ist ps -A -o pid , args | grep \ [j] ava
- Dieser Befehl ignoriert den grep-Prozess und gibt einfach die PID zurück
ps -ef | grep -v grep | grep java | awk '{print $2}'* Kürzer: ps -ef | grep '[j]ava' | awk '{print $2}'
Man benutzt dies, um die PID zu erhalten. Achtung: wenn man die Ausgabe als Variable a | verwendet, muss am Ende tr -d '\ n' hinzugefügt werden
pidof
sudo pidof <process_name>
Es wird eine Liste von Pids zurückgegeben, die dem Prozessnamen entsprechen https://linux.die.net/man/8/pidof
- funktioniert solange man nicht über mehrere Instanzen verfügt (beispielsweise Java)
adb shell procrank | grep TYPE_YOUR_PROCESS_NAME_INSTEAD | awk '{print $1}'
Ausgabe
- Ausgabeformatierung
ps -A -o pid
Die Ausgabeformatierung des Befehls ist die beste Option
- Die Option -o steuert die Ausgabeformatierung
- Unten sind einige Argumente aufgelistet, siehe 'man ps' für den Rest (um mehrere zu verwenden, wäre es -o pid, cmd, flags)
KEY LONG DESCRIPTION c cmd simple name of executable C pcpu cpu utilization f flags flags as in long format F field g pgrp process group ID G tpgid controlling tty process group ID j cutime cumulative user time J cstime cumulative system time k utime user time o session session ID p pid process ID
awk und cut
Im Allgemeinen möchte man keinen regulären Ausdruck für die Auswahl der ersten Spalte, sondern möchte ihn zum Ausschneiden leiten oder awk zum Ausschneiden der ersten Spalte wie folgt
ps ax | awk '{print $1}'
Reguläre Ausdrücke
Wenn man Reguläre Ausdrücke verwendet, könnte dies so aussehen
ps ax | perl -nle 'print $1 if /^ *([0-9]+)/'
- $1 druckt nur das, was in der Klammer übereinstimmt
- ^ verankert das am Zeilenanfang
- Leerzeichen bedeutet, dass optionale Leerzeichen vor der Nummer zulässig sind
- [0-9] + bedeutet eine oder mehrere Ziffern
- Achtung
- Der reguläre Ausdruck darf nicht mit den anfänglichen Leerzeichen vor kleinen Pids übereinstimmen
- Außerdem sollte eine PID mindestens aus einer Ziffer bestehen, nicht aus Null (Achtung: + und nicht * verwenden)
Verwenden Sie den Schalter '-o' , um eine Ausgabe im Cust-Format zu erhalten
ps -o pid
Der schlechte Weg mit sed kann sein
ps -ax | sed 's#^\( *[0-9]\+\) .*$#\1#'
''ps -eo pid''' oder '''ps -eo %p''
-e :Alle Prozesse auswählen -o :Format pid = Prozess-ID% p sameas pid