Zum Inhalt springen

Ps/Anwendung: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''ps/Anwendung'''
'''ps/Anwendung'''
=== Beispiele ===
; Alle Prozesse im System in der Standard-Syntax anzeigen
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -e
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -ef
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -eF
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -ely
</syntaxhighlight>
; Alle Prozess im System in der BSD-Syntax anzeigen
<syntaxhighlight lang="bash" highlight="1" line copy>
ps ax
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="1" line copy>
ps axu
</syntaxhighlight>
; Einen Prozessbaum ausgeben
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -ejH
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="1" line copy>
ps axjf
</syntaxhighlight>
; Informationen zu Threads erhalten
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -eLf
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="1" line copy>
ps axms
</syntaxhighlight>
; Sicherheitsinformationen erhalten
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -eo euser,ruser,suser,fuser,f,comm,label
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="1" line copy>
ps axZ
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -eM
</syntaxhighlight>
; Alle Prozesse im System, die mit Root-Rechten laufen (reale & effektive Kennung), in einem benutzerdefinierten Format anzeigen
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -U root -u root u
</syntaxhighlight>
; Alle Prozesse in einem benutzerdefinierten Format anzeigen
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="1" line copy>
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
</syntaxhighlight>
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -Ao pid,tt,user,fname,tmout,f,wchan
</syntaxhighlight>
; Nur die Prozesskennungen (PIDs) von syslogd ausgeben
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -C syslogd -o pid=
</syntaxhighlight>
; Nur den Namen des Prozesses mit der Kennung 42 ausgeben
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -q 42 -o comm=
</syntaxhighlight>


=== Bestimmte PID ausgeben ===
=== Bestimmte PID ausgeben ===
Zeile 6: Zeile 82:
</syntaxhighlight>
</syntaxhighlight>


Oder wenn pgrep verfügbar ist, ist Folgendes zu verwenden:
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. Zum Beispiel:
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>
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:
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>
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 ===
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo pidof <process_name>
</syntaxhighlight>
</syntaxhighlight>


Es wird eine Liste von Pids zurückgegeben, die dem Prozessnamen entsprechen
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
[https://linux.die.net/man/8/pidof 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 ===
=== Ausgabe ===
Ausgabeformatierung
; Ausgabeformatierung
<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="1" line copy>
ps -A -o pid
ps -A -o pid
</syntaxhighlight>
</syntaxhighlight>


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'').
Die Ausgabeformatierung des Befehls ist die beste Option
* Die Option -o steuert die Ausgabeformatierung
  KEY   LONG         DESCRIPTION
* Unten sind einige Argumente aufgelistet, siehe 'man ps' für den Rest (um mehrere zu verwenden, wäre es ''-o pid, cmd, flags'')
  c    cmd          simple name of executable
 
  C    pcpu        cpu utilization
  KEY LONG     DESCRIPTION
  f     flags       flags as in long format F field
  c   cmd     simple name of executable
  g    pgrp        process group ID
  C   pcpu     cpu utilization
  G     tpgid       controlling tty process group ID
  f   flags   flags as in long format F field
  j     cutime       cumulative user time
  g   pgrp     process group ID
  J     cstime       cumulative system time
  G   tpgid   controlling tty process group ID
  k     utime       user time
  j   cutime   cumulative user time
  o     session     session ID
  J   cstime   cumulative system time
  p    pid          process ID
  k   utime   user time
  o   session   session ID
  p   pid     process ID


=== [[awk]] und [[cut]] ===
==== 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:
; [[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
<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="1" line copy>
ps ax | awk '{print $1}'
ps ax | awk '{print $1}'
</syntaxhighlight>
</syntaxhighlight>


=== Regular expression ===
==== Reguläre Ausdrücke ====
Wenn man [[Regular expression]] verwendet, könnte dies so aussehen
Wenn man [[Reguläre Ausdrücke]] verwendet, könnte dies so aussehen
<syntaxhighlight lang="bash" highlight="1" line copy>
<syntaxhighlight lang="bash" highlight="1" line copy>
ps ax | perl -nle 'print $1 if /^ *([0-9]+)/'
ps ax | perl -nle 'print $1 if /^ *([0-9]+)/'
Zeile 74: Zeile 146:
* 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 89: Zeile 161:
</syntaxhighlight>
</syntaxhighlight>


-e :Alle Prozesse auswählen, -o :Format, pid = Prozess-ID% p sameas pid
-e :Alle Prozesse auswählen
 
-o :Format
=== Beispiele ===
pid = Prozess-ID% p sameas pid
; 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=


=== Einfache Prozessauswahl ===
[[Kategorie:Linux/Prozess/Befehl]]
{| class="wikitable sortable options gnu big"
[[Kategorie:Linux/Befehl]]
|-
[[Kategorie:Procps]]
! 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. 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. 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#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). Gleichbedeutend mit -N.
|-
| [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. 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). Gleichbedeutend mit --deselect.
|-
| 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#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.
|}

Aktuelle Version vom 22. Oktober 2025, 10:32 Uhr

ps/Anwendung

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

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

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