Zum Inhalt springen

Ps/Anwendung

Aus Foxwiki

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