GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Benutzer- und Kernelzeit eines laufenden Prozesses abrufen?

Gibt es eine Möglichkeit, mit Standard-Linux/Unix-Tools festzustellen, wie viel ein Prozess im Benutzermodus verbracht hat und wie lange auf den Kernel gewartet wurde?

Mit anderen Worten, genau die „user“- und „sys“-Werte, die Sie erhalten, wenn Sie time verwenden , aber während Prozesslaufzeit?

HINWEIS: Eine Möglichkeit besteht darin, WBEM zu verwenden und Linux_UnixProcess aufzuzählen, aber ich muss other verwenden Werkzeug als dieses; Mein Ziel ist es zu überprüfen, was mir der WBEM-Anbieter sagt, d. h. ich muss ein anderes Tool verwenden.

Akzeptierte Antwort:

Unter Linux sind die Informationen in den Feldern 14 bis 17 von /proc/$pid/stat verfügbar (siehe proc(5) für Details):

Felder sind:

  • 14:Benutzerzeit (in Taktzahlen)
  • 15:Systemzeit
  • 16:Benutzerzeit der gewarteten Kinder
  • 17:sys-Zeit der gewarteten Kinder

(alle Threads eines gegebenen Prozesses haben dort die gleichen Werte)

Sie werden nicht direkt von ps gemeldet .

ps meldet 14 + 15 mit ps -o time und 14 + 15 + 16 + 17 mit ps --cumulative -o bsdtime .

Beachten Sie, dass das zweite Feld in /proc/$pid/stat kann Leerzeichen oder Zeilenumbruchzeichen enthalten, sodass Sie es nicht mit $1 von awk parsen können , $2

Sie können perl verwenden wie:

$ perl -MPOSIX -l -0777 -ne '@f = /(.*)|S+/gs;
    printf "utime: %.2fnstime: %.2fncutime: %.2fncstime: %.2fn",
      map {$_/POSIX::sysconf( &POSIX::_SC_CLK_TCK )}@f[13..16]' "/proc/$pid/stat"
utime: 3.79
stime: 2.06
cutime: 56.49
cstime: 34.27

Ein Prozess kann seine eigenen Zeiten mit getrusage(RUSAGE_SELF) abrufen und getrusage(RUSAGE_CHILDREN) .

Es gibt auch ein times Systemaufruf, der dieselben Informationen abruft. POSIX-Shells haben times dafür eingebaut. Einige Shells liefern diese Informationen auch mit time (ohne Argumente).

$ times
0m3.800s 0m2.060s
0m56.512s 0m34.276s

$ ps -o time -p "$$"
    TIME
00:00:05
$ ps --cumulative -o bsdtime -p "$$"
  TIME
  1:36

Linux
  1. Ssh – Wie enteigne ich einen laufenden Prozess und verknüpfe ihn mit einer neuen Bildschirm-Shell?

  2. Umgebung eines laufenden Prozesses ändern?

  3. Linux – Wie erhalte ich die Uhrzeit eines laufenden Prozesses?

  4. Linux-Skript, um zu überprüfen, ob der Prozess ausgeführt wird, und auf das Ergebnis zu reagieren

  5. PHP und mod_fcgid:ap_pass_brigade ist in der Funktion handle_request_ipc fehlgeschlagen

Linux-Kernel und seine Funktionen

So finden und beenden Sie laufende Prozesse in Linux

Laufende Prozesse

Was ist der Unterschied zwischen Benutzerbereich und Kernelbereich?

Wie kann ich die Uhrzeit eines laufenden Prozesses abrufen?

Als welcher Benutzer sollten NGinx und PHP ausgeführt werden?