GNU/Linux >> Belajar Linux >  >> Linux

Dapatkan Waktu Pengguna Dan Kernel Dari Proses yang Berjalan?

Apakah ada cara untuk menentukan dengan menggunakan alat Linux/Unix standar berapa banyak proses yang telah dihabiskan dalam mode Pengguna dan berapa lama menunggu kernel?

Dengan kata lain, persisnya nilai “user” dan “sys” yang Anda dapatkan saat menggunakan time , tetapi selama proses runtime?

CATATAN: salah satu caranya adalah dengan menggunakan WBEM dan menghitung Linux_UnixProcess, tetapi saya perlu menggunakan lainnya alat dari ini; tujuan saya adalah untuk memverifikasi apa yang dikatakan penyedia WBEM kepada saya, yaitu saya perlu menggunakan alat yang berbeda.

Jawaban yang Diterima:

Di Linux, info tersedia di kolom 14 hingga 17 dari /proc/$pid/stat (lihat proc(5) untuk detailnya):

Bidangnya adalah:

  • 14:waktu pengguna (dalam jumlah detak jam)
  • 15:waktu sistem
  • 16:waktu pengguna menunggu anak
  • 17:sistem waktu menunggu anak

(semua utas dari proses yang diberikan memiliki nilai yang sama di sana)

Mereka tidak langsung dilaporkan oleh ps .

ps melaporkan 14 + 15 dengan ps -o time dan 14 + 15 + 16 + 17 dengan ps --cumulative -o bsdtime .

Hati-hati bahwa kolom kedua di /proc/$pid/stat mungkin berisi spasi atau karakter baris baru, jadi Anda tidak dapat menguraikannya dengan $1 awk , $2

Anda dapat menggunakan perl seperti:

$ 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

Sebuah proses dapat mengambil waktunya sendiri dengan getrusage(RUSAGE_SELF) dan getrusage(RUSAGE_CHILDREN) .

Ada juga times panggilan sistem yang mengambil informasi yang sama. Shell POSIX memiliki times bawaan untuk itu. Beberapa shell juga menyediakan informasi tersebut dengan time (tanpa argumen).

$ 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 – Bagaimana Cara Menyangkal Proses yang Berjalan Dan Mengaitkannya ke Shell Layar Baru?

  2. Ubah Lingkungan Proses yang Berjalan?

  3. Menjalankan Skrip Setiap Kali Kernel Baru Diinstal?

  1. Status Proses Linux

  2. Skrip Linux untuk memeriksa apakah proses sedang berjalan dan menindaklanjuti hasilnya

  3. Salin dan chmod/chown secara bersamaan

  1. Apa perbedaan antara Non-preemptive, Preemptive dan Selective Preemptive Kernel?

  2. Bagaimana saya bisa mendapatkan waktu jam dinding dari proses yang sedang berjalan?

  3. Sebagai Pengguna Apa NGinx dan PHP harus dijalankan?