Saya ingin memonitor penggunaan memori / cpu satu proses secara real time. Serupa dengan top
tetapi ditargetkan hanya pada satu proses, lebih disukai dengan semacam grafik riwayat.
shell
process
monitoring
top
Josh K.
sumber
sumber
Jawaban:
Di Linux,
top
sebenarnya mendukung pemfokusan pada satu proses tunggal, meskipun secara alami tidak memiliki grafik riwayat:Ini juga tersedia di Mac OS X dengan sintaks yang berbeda:
sumber
top -p `pgrep -f /usr/bin/kvm`
.hostname
_pid.txt; exit'andhtop
adalah pengganti yang bagus untuktop
. Ini memiliki ... Warna! Pintasan keyboard sederhana! Gulir daftar menggunakan tombol panah! Matikan proses tanpa meninggalkan dan tanpa mencatat PID! Tandai banyak proses dan bunuh semuanya!Di antara semua fitur, halaman manual mengatakan Anda dapat menekan Funtuk mengikuti proses.
Sungguh, Anda harus mencoba
htop
. Saya tidak pernah memulaitop
lagi, setelah pertama kali saya gunakanhtop
.Tampilkan satu proses:
htop -p PID
sumber
top
juga memiliki warna. Tekanz
.top
memiliki warna! Sayang sekali warnanya sangat tidak berguna, khususnya bila dibandingkan denganhtop
(yang memudar proses pengguna lain dan menyoroti nama program).htop -p PID
akan bekerja juga, sama seperti contoh yang diberikan oleh @Michael Mrozek.psrecord
Berikut ini semacam grafik riwayat .
psrecord
Paket python melakukan hal ini.Untuk satu proses, berikut ini (dihentikan oleh Ctrl+C):
Untuk beberapa proses, skrip berikut bermanfaat untuk menyinkronkan bagan:
Grafik terlihat seperti:
memory_profiler
The paket menyediakan RSS-satunya sampel (ditambah beberapa pilihan Python-spesifik). Itu juga dapat merekam proses dengan proses anak-anaknya (lihat
mprof --help
).Secara default, ini akan muncul
python-tk
explorer grafik berbasis Tkinter ( mungkin diperlukan) yang dapat diekspor:tumpukan grafit & statsd
Ini mungkin tampak berlebihan untuk tes satu kali yang sederhana, tetapi untuk sesuatu seperti debugging beberapa hari, itu pasti, masuk akal.
raintank/graphite-stack
Gambarpsutil
danstatsd
klien all-in-one (dari penulis Grafana) yang praktisprocmon.py
menyediakan implementasi.Kemudian di terminal lain, setelah memulai proses target:
Kemudian membuka Grafana di http: // localhost: 8080 , otentikasi sebagai
admin:admin
, mengatur sumber data https: // localhost , Anda dapat merencanakan grafik seperti:tumpukan grafit & telegraf
Alih-alih skrip Python yang mengirim metrik ke Statsd,
telegraf
(danprocstat
memasukkan plugin) dapat digunakan untuk mengirim metrik ke Graphite secara langsung.telegraf
Konfigurasi minimal terlihat seperti:Kemudian jalankan line
telegraf --config minconf.conf
. Bagian Grafana sama, kecuali nama metrik.sysdig
sysdig
(tersedia di repositori Debian dan Ubuntu) dengan UI sysdig-inspect terlihat sangat menjanjikan, memberikan detail yang sangat halus bersama dengan pemanfaatan CPU dan RSS, tetapi sayangnya UI tidak dapat membuat mereka, dansysdig
tidak dapat menyaringprocinfo
acara dengan proses di saat penulisan. Padahal, ini harus dimungkinkan dengan pahat khusus (sysdig
ekstensi ditulis dalam Lua).sumber
pgrep --help
untuk menyelamatkan. Setidaknya ada--newest
dan--oldest
.Ctrl+C
pada proses psrecord hanya berhenti tanpa menyimpan plot, Anda harus mengakhiri proses-tes.Untuk menggunakan informasi itu pada skrip Anda dapat melakukan ini:
calcPercCpu.sh
gunakan seperti: di
calcPercCpu.sh 1234
mana 1234 adalah pidUntuk $ nPid yang ditentukan, itu akan mengukur rata - rata 10 snapshot dari penggunaan cpu dalam keseluruhan 1 detik (penundaan masing-masing 0,1s * nTimes = 10); yang memberikan hasil akurat dan baik dari apa yang terjadi pada saat itu.
Tweak variabel sesuai kebutuhan Anda.
sumber
$nPercCpu
): shell, top, grep, sed, cut ... bc. Banyak jika tidak semua ini misalnya Anda bisa bergabung menjadi 1 Sed atau skrip Awk.top
's keluaran adalah rata-rata lebih$delay
. Lih Bagaimana cara menghitung penggunaan CPUSaya biasanya menggunakan dua berikut:
HP caliper : alat yang sangat bagus untuk memantau prosesnya, Anda dapat memeriksa grafik panggilan dan informasi tingkat rendah lainnya. Tetapi harap dicatat ini gratis hanya untuk penggunaan pribadi.
daemontools : koleksi alat untuk mengelola layanan UNIX
sumber
Menggunakan
top
danawk
seseorang dapat dengan mudah membuat mis. Log yang dipisahkan koma dari% CPU ($9
) +% MEM ($10
) yang nantinya dapat dimasukkan ke dalam statistik dan alat grafik.Output akan seperti
Ini tidak akan memberikan hasil yang baik untuk yang besar
$delay
, karena cap waktu yang dicetak sebenarnya$delay
tertinggal karena bagaimanatop
hasil kerjanya. Tanpa terlalu banyak detail, satu cara sederhana untuk melakukannya adalah dengan mencatat waktu yang disediakan olehtop
:Maka cap waktu akurat, tetapi output masih akan tertunda
$delay
.sumber
Jika Anda tahu nama proses yang dapat Anda gunakan
sumber
Jika Anda memiliki distribusi Linux cut-down di mana top tidak memiliki opsi per proses (-p) atau opsi terkait, Anda dapat mengurai output dari perintah top untuk nama proses Anda untuk mendapatkan informasi penggunaan CPU per proses.
8 mewakili penggunaan CPU per proses dalam output dari perintah teratas dalam distribusi Linux saya yang tertanam
sumber
Reputasi tidak cukup untuk berkomentar, tetapi untuk psrecord Anda juga dapat menyebutnya langsung, dengan cara terprogram, langsung dalam Python:
sumber
Jika Anda memerlukan rata-rata untuk periode waktu proses tertentu, coba opsi akumulatif -c dari atas:
"-c a" ditemukan di bagian atas untuk Mac 10.8.5.
Untuk Scientific Linux, opsinya adalah -S, yang dapat diatur secara interaktif.
sumber
top
sebenarnya menyediakan fitur ini. Versi saya di Fedora 19 tidak. Sama juga di Ubuntu 13.04.Saya agak terlambat di sini, tetapi saya akan membagikan trik baris perintah saya hanya dengan menggunakan default
ps
Saya menggunakan ini sebagai one-liner. Di sini baris pertama menjalankan perintah dan menyimpan PID dalam variabel. Kemudian ps akan mencetak waktu yang telah berlalu, PID yang menggunakan CPU persen, memori persen, dan memori RSS. Anda dapat menambahkan bidang lain juga.
Segera setelah proses berakhir,
ps
perintah tidak akan mengembalikan "sukses" danwhile
loop akan berakhir.Anda dapat mengabaikan baris pertama jika PID yang ingin Anda profil sudah berjalan. Cukup tempatkan id yang diinginkan dalam variabel.
Anda akan mendapatkan output seperti ini:
sumber