top -pid 3907 -stats "pid,command,cpu"
-pid 3907
: ID proses Anda
-stats pid,command,cpu
: hanya tampilkan ID proses, nama, dan CPU%
Tidak perlu dijalankan awk
pada output.
Jika Anda ingin memposting proses, gunakan -l 0
untuk menjalankan dalam mode logging (0 berarti tanpa batas, segala sesuatu yang lain membatasi jumlah sampel). Output akan terlihat seperti ini (dua pengulangan):
Processes: 72 total, 3 running, 1 stuck, 68 sleeping, 326 threads
2011/05/10 19:15:13
Load Avg: 0.14, 0.14, 0.09
CPU usage: 20.0% user, 26.66% sys, 53.33% idle
SharedLibs: 5304K resident, 5208K data, 0B linkedit.
MemRegions: 16345 total, 1048M resident, 54M private, 338M shared.
PhysMem: 726M wired, 1802M active, 687M inactive, 3215M used, 750M free.
VM: 169G vsize, 1036M framework vsize, 5261732(0) pageins, 552476(0) pageouts.
Networks: packets: 46747406/52G in, 32528901/3715M out.
Disks: 9452898/244G read, 11226269/293G written.
PID COMMAND %CPU
3907 WindowServer 0.0
Processes: 72 total, 3 running, 1 stuck, 68 sleeping, 326 threads
2011/05/10 19:15:14
Load Avg: 0.13, 0.14, 0.09
CPU usage: 0.95% user, 1.90% sys, 97.14% idle
SharedLibs: 5304K resident, 5208K data, 0B linkedit.
MemRegions: 16346 total, 906M resident, 54M private, 386M shared.
PhysMem: 726M wired, 1802M active, 687M inactive, 3215M used, 751M free.
VM: 169G vsize, 1036M framework vsize, 5261732(0) pageins, 552476(0) pageouts.
Networks: packets: 46747406/52G in, 32528901/3715M out.
Disks: 9452898/244G read, 11226269/293G written.
PID COMMAND %CPU
3907 WindowServer 2.7
Gunakan awk
atau alat serupa untuk hanya menampilkan setiap baris ke-13 (karena baris ini berisi nilai dalam contoh itu):
$ top -l 0 -pid 3907 -stats pid,command,cpu | awk 'NR%13==0'
3907 WindowServer 0.0
3907 WindowServer 1.3
3907 WindowServer 2.2
# top -p1 -stats "pid,command,cpu" top: unknown option 't'
top
Linux.Ini tentu saja dapat dilakukan dan saya akan menjelaskan bagaimana saya akan melakukannya. Saya tidak berpura-pura ini adalah pendekatan yang optimal, tetapi itu berhasil. Saya menggunakan Linux (dan bash shell), jadi perilaku default top saya mungkin sedikit berbeda. Jadi Anda mungkin perlu menyetel mini-howto ini untuk skenario khusus Anda.
Jalankan saja teratas , tanpa argumen apa pun:
$ top
Berikut adalah tajuk dan baris yang relevan dari output saya:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2569 user 20 0 339m 86m 10m S 7.8 6.9 6:42.99 java
Saya telah mengambil proses yang tetap dalam memori untuk beberapa waktu dan benar-benar mengkonsumsi CPU, saya akan menggunakannya sebagai proses pengujian untuk mencapai tujuan akhir.
Secara default, top menjalankan dalam mode interaktif. Ini tidak cocok untuk saya, saya ingin mengambil data yang relevan dan mencetaknya. Saya akan menangani tugas menampilkan data secara interaktif setelah itu. Kutipan yang relevan dari halaman utama:
Ini adalah perintah teratas yang disesuaikan yang mencetak output hanya sekali, lalu keluar:
$ top -b -n 1
Saya tahu PID yang ingin saya tonton, jadi saya akan menambahkan satu batasan lagi ke atas, sehingga hanya mencetak data tentang proses itu:
$ top -b -n 1 -p 2569
Bahkan dalam mode batch, top masih mencetak header, yang berisi statistik seluruh sistem misc seperti uptime, free memory / swap dll. Saya tidak membutuhkan ini. Yang saya butuhkan hanya satu baris - baris yang berisi data tentang proses saya, jadi saya akan memotongnya dari seluruh output seperti ini:
$ top -b -n 1 -p 2569 | tail -n 2 | head -n 1
Seperti yang Anda lihat, saya mendapatkan baris kedua dari 1.
Saya akan menyalurkan baris ini ke awk untuk mengekstrak hanya kolom yang saya butuhkan:
$ top -b -n 1 -p 2569 | tail -n 2 | head -n 1 | awk '{print $1, $12, $9}'
Sampai sekarang, saya telah melakukan manipulasi ini di baris perintah, sekarang saatnya untuk menambahkan beberapa kegigihan dan fleksibilitas pada kasus khusus kami. Saya memindahkan seluruh baris menjadi skrip shell sederhana. Saya akan menyebutnya 3top , namanya ditekankan karena akan digunakan nanti:
#!/bin/bash
top -b -n 1 -p 2569 | tail -n 2 | head -n 1 | awk '{print $1, $12, $9}'
Nomor PID di-hardcode, berikut ini cara membuat skrip untuk menerimanya sebagai argumen baris perintah:
#!/bin/bash
top -b -n 1 -p "$1" | tail -n 2 | head -n 1 | awk '{print $1, $12, $9}'
Untuk membuat statistik tampilan 3top tentang PID 2569, harus dinamakan seperti ini:
$ ./3top 2569
Saya juga ingin persentase ditampilkan setelah memuat CPU, jadi saya menyetel skrip 3top saya seperti ini:
#!/bin/bash
out=$(top -b -n 1 -p "$1" | tail -n 2 | head -n 1 | awk '{print $1, $12, $9}')
echo "$out%"
Saya telah mengalihkan seluruh output dari rantai perintah (terhubung melalui pipa) menjadi sebuah variabel. Lalu saya hanya mencetaknya menggunakan gema dan menambahkan '%' di akhir, karena beban CPU adalah bidang terakhir
Pada titik ini saya memiliki skrip batch yang menerima PID sebagai argumen dan mencetak statistik satu kali. Ingin pemantauan waktu nyata saja? Mudah, karena jam tangan bisa melakukannya! Jalankan skrip seperti ini:
$ watch -n 1 3top 2569
Ini akan melakukan pemantauan real time dengan menjalankan 3top sekali per detik.
sumber
top
. opsi atau sintaks yang tidak valid: -b . Tidak tahu mengapa ini berulang kali dibatalkan.top
(inprocps
) tidak dapat diinstal menggunakan Homebrew, MacPorts atau Fink dan tidak dapat dikompilasi dari sumber menggunakan salah satumake
ataucc top.c
.The
top
format tampilan dapat disesuaikan, tetapi tidak ada cara untuk menentukan pilihan tampilan pada baris perintah. Namun, jika Anda inventif, Anda mungkin dapat melakukan apa yang Anda butuhkan dengan memanipulasi~/.toprc
file secara cerdik .Dengan asumsi Anda belum menyesuaikan tampilan
top
(dan tidak memiliki~/.toprc
file):top
.*
sebelahnya yang tidak Anda inginkan, tekan huruf yang sesuai untuk membatalkan pilihan bidang itu. Misalnya, tekan euntuk membatalkan pilihanUser Name
bidang. Ketika Anda selesai, Anda hanya harus memiliki*
sebelahProcess Id
,CPU usage
, danCommand name/line
.~/.toprc
file Anda .top
, lalu luncurkan ulang untuk memverifikasi bahwa pengaturan Anda disimpan.~/.toprc
menjadi sesuatu seperti~/min.toprc
sebelum meluncurkantop
. Saat Anda ingin beralih ke tata letak minimal, ganti nama~/min.toprc
kembali~/.toprc
sebelum meluncurkantop
.Pengubahan nama dan peluncuran file ini
top
mungkin dapat dikerjakan menjadi skrip shell sederhana oleh seseorang yang memiliki lebih banyak pengalaman dan pengetahuan daripada saya. Anda akan memerlukan pertimbangan khusus jikatop
tata letak reguler Anda telah disesuaikan.sumber
.toprc
? Saya suka menambahkan filterRUID>999
saat startup.