Saya mencoba untuk menghitung jumlah query SQL per detik dari file log dan saya ingin melakukannya secara real time dengan mem-pipe stdout dari grep ke beberapa perintah. (Saya melakukan beberapa pengujian kinerja)
Saya bisa menulis sendiri, tetapi berpikir pasti ini akan ada.
Saya melihat wc tetapi tidak melihat opsi untuk mengizinkan ini.
Saya juga bisa menggunakannya untuk menghitung permintaan per detik dengan mem-pipe ekor dari log akses.
linux
performance
digidigo
sumber
sumber
Jawaban:
halaman manual
tonton - jalankan program secara berkala, tampilkan keluaran layar penuh Secara default, program dijalankan setiap 2 detik; gunakan -n atau --interval untuk menentukan interval yang berbeda.
sumber
pv
adalah perintahmu! P ipe V iewer mencetak statistik tentang data yang melewatinya, dan dapat berjalan di mana saja dalam pipa Anda, karena itu pipa stdin langsung ke stdout. Sebagai contoh:The
pv
perintah cetak ke stderr saat ini jumlah baris per detik (default adalah byte per detik), yang, untuk sumber data tertentu (default file log Nginx ini), setara dengan permintaan web yang masuk per detik. Saya hanya peduli dengan hitungan, jadi saya memasukkan pipa ke/dev/null
. Ada juga opsi seperti:-b
(jumlah total garis),--average-rate
(tingkat rata-rata sejak awal), dan--timer
(melacak berapa lama pipa telah berlangsung).Jika Anda tidak mengatakannya
--line-mode
, itu akan menghitung byte, yang mungkin bukan yang Anda inginkan untuk log server, tetapi bisa berguna di tempat lain.Catatan akhir:
... | pv -lb > file.txt
sangat mirip... | tee file.txt | awk '{printf "\r%lu", NR}'
, yang juga berguna untuk menghitung baris, tetapipv
panggilannya jauh lebih pendek, meskipun outputnya tidak terlalu menarik -pv
pembaruan setiap detik secara default, sementaraawk
perintah itu diperbarui terus menerus.sumber
pv
itu yang dibangun untuk (aku akan meraihawk
jika aku jadi kamu), tapi tentu saja itu mungkin. Misalkantwilight stream --timeout 5
adalah perintah yang akan sampel dari spritzer Twitter selama 5 detik dan kemudian berhenti:RATE="$(twilight stream --timeout 5 | pv --line-mode --rate --force 2>&1 1>/dev/null | tr -s '\r\n' '\n' | tail -1)"
, kemudianecho $RATE
menghasilkan sesuatu seperti "[40.8 / s]" (perhatikan tambahan--force
bendera, karenapv
'sstderr
tidak lagi TTY a).> /dev/null
pertunjukkan bahwa output sekarang "blok chunked" dan tidak lagi mengalir dengan lancar. Mungkinunbuffer
diperlukan pada beberapa program produksi sehingga mereka tidak beralih untuk memblokir buffering output ketika mereka mendeteksi bahwa mereka sedang disalurkan?Mungkin Anda harus mencobanya
logtop
?sumber
sumber
~/.my.cnf
untuk menjalankanmysqladmin
tanpa meminta kata sandi?