Ps
ps (process status) zeigt laufende Prozesse an
Nur bestimmte PID ausgeben
ps -ef | grep '[j]ava'
Oder wenn pgrep </ tt> 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 </ tt>. 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' </ tt> hinzugefügt werden.
pidof
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 (z. B. Java)
adb shell procrank | grep TYPE_YOUR_PROCESS_NAME_INSTEAD | awk '{print $1}'
ps 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 </ tt>).
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
Spalten mit Awk oder 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}'
Option: Regex
Wenn man Regex 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 or ps -eo %p
-e Alle Prozesse auswählen -o Format pid = Prozess-ID% p sameas pid
Links
Intern
- TODO
- Wenn eine ständige Aktualisierung der Prozessliste gewünscht ist, so ist top zu verwenden
- Mit pgrep lassen sich Prozesse gezielt über den Namen oder eines regulären Ausdrucks suchen
- pstree kann man alle laufenden Prozesse in Baumform anzeigen
Weblinks
- TODO