Saya telah menemukan monitor yang bagus yang memungkinkan saya untuk mencatat berbagai data runtime dari satu proses. Saya mencari yang setara yang melakukan hal yang sama untuk penggunaan bandwidth. Idealnya, perintahnya harus seperti bwmon --pid 1 --log init.log
. Apakah ada? Bisakah ini berjalan tanpa hak admin?
monitoring
bandwidth
tepang
sumber
sumber
Jawaban:
sesuatu untuk Anda mulai (kalau-kalau Anda ingin menulisnya sendiri):
komentar:
stat --printf="%N\n" /proc/PID/exe | cut -d ' ' -f 3
sumber
nc
melalui localhost, mengirim satu byte per detik, dan menyaksikan/proc/<listening-nc-pid>/net/dev
. Kemudian saya menjalankannc
pasangan kedua , mengirim pada tingkat maksimum. File yang saya tonton sangat jelas menghitung data pasangan kedua bersama dengan pasangan pertama. Berjalan di Linux 2.6.32.function strftime never defined
; itu diperbaiki dengan menginstal gawk ./proc/<pid>/net/dev
dan/proc/net/dev
memiliki konten yang sama di sini. Karenanya skrip hanya melaporkan lalu lintas untuk eth0, bukan untuk proses yang diberikan.eth0
, seperti yang terlihat oleh proses. Itu tidak menghitung data yang dikirim oleh proses melalui antarmuka itu.Jika Anda puas dengan bandwidth I / O umum yang digunakan (atau jika program Anda melakukan hampir seluruhnya I / O jaringan), maka Anda dapat menonton
/proc/<pid>/io
file tersebut. Anda inginrchar
danwchar
bidang. Anda mungkin ingin mengurangiread_bytes
danwrite_bytes
, karena mereka mewakili membaca dan menulis ke lapisan penyimpanan. Lihat bagian 3.3 dari http://www.kernel.org/doc/Documentation/filesystems/proc.txt .Jika Anda membutuhkan lebih banyak resolusi .... Anda mungkin dapat menggunakan script ini
lsof
danstrace
, meskipun akan sulit untuk menyelesaikan semua kasus sudut kanan. Ide dasarnya adalah untuk mengurai output daristrace -p <pid>
, meraih parameter pertama (= file descriptor) dan nilai kembali (= jumlah byte) dariread()
,write()
,send()
, danrecv()
panggilan ( Catatan ada beberapa syscalls lebih untuk mendengarkan, saya haven' t melacak mereka semua). Buang nilai negatif; mereka menunjukkan kesalahan. Gunakanlsof -p <pid>
untuk mengetahui deskriptor file mana yang merupakan soket TCP / UDP, dan tambahkan jumlah per fd. Strategi ini tidak memerlukan root selama Anda memiliki proses yang Anda periksa, tetapi akan sangat berbulu untuk menulis, apalagi menulis dengan baik.sumber
coba nethogs :
sumber