Apakah ada cara untuk mengetahui aplikasi apa yang menggunakan sebagian besar bandwidth di Linux? [Tutup]

56

Saya mencari sebuah utilitas yang dapat menunjukkan kepada saya berapa banyak bandwidth yang digunakan oleh setiap proses. Seharusnya hanya mencetak data dan keluar karena saya ingin memberi makan daftar itu ke conky.

vava
sumber

Jawaban:

71

Anda dapat mencoba NetHogs .

NetHogs adalah alat 'net top' kecil. Alih-alih memecah traffic per protokol atau per subnet, seperti yang dilakukan kebanyakan alat, ia mengelompokkan bandwidth berdasarkan proses . NetHogs tidak bergantung pada modul kernel khusus yang akan dimuat. Jika tiba-tiba ada banyak lalu lintas jaringan, Anda dapat menjalankan NetHogs dan segera melihat PID yang menyebabkan ini. Ini membuatnya mudah untuk mengidentifikasi program-program yang menjadi liar dan tiba-tiba mengambil bandwidth Anda.

NetHogs_Screenshot

Milde
sumber
Hampir persis apa yang saya butuhkan tetapi hal itu tidak bekerja :(
vava
Nah, apa yang tidak berhasil? Ada kesalahan? Apakah itu tidak dimulai sama sekali? Output konsol?
Milde
tidak bekerja dengan ipv6
zb '29
Anda harus menjalankannya sebagai root. Mode promiscous direkomendasikan. sudo nethogs -p eth2. Anda harus menentukan ethernet Anda jika tidak secara default eth0.
Anandu M Das
@vava Ada masalah dengan yang ada di repo, sudah diperbaiki di 0.8.1 tetapi Anda harus membangun dari sumber (yang sangat mudah). Lihat posting ini: askubuntu.com/questions/726601/...
Matthew
6

Ada beberapa yang tercantum di sini .

Namun favorit saya tetap iftop dan tcpdump . Wireshark juga merupakan pilihan yang sangat bagus.

BinaryMisfit
sumber
Saya memiliki masalah etika dengan Wireshark, jika tidak sendirian di jaringan ... Kecuali Anda memiliki cara untuk membuatnya menyelidiki hanya localhost, dalam hal ini saya tertarik.
Gnoupi
5
Jika Anda tidak mengaktifkan mode promiscuous, itu hanya akan menangkap lalu lintas yang diarahkan ke host Anda.
Amok
Huh, tidak satu pun dari utilitas tersebut yang dapat memberi tahu saya proses mana yang menggunakan sebagian besar bandwidth dan itulah yang saya cari.
vava
5

Coba atop ... untuk memaksimalkannya, Anda mungkin harus mengaktifkan beberapa tambalan kernel tambahan (tambalan akuntansi I / O).

Jika atopbukan pilihan, gunakan netstat -anp --inet(sebagai root) untuk memberikan daftar port TCP / UDP mana yang digunakan lsofuntuk memproses (atau mungkin gunakan untuk itu). Dari sana cukup beralih ke setiap proses yang memiliki soket terbuka dan baik melampirkannya menggunakan ltrace -Satau straceuntuk melihat membaca, menulis, mengirim dan menerima, atau menggunakan tcpdumpdengan filter yang menentukan alamat IP lokal Anda dan port TCP / UDP yang terdaftar.

atoptentu saja yang paling nyaman dari ini ... jika Anda memilikinya dan dukungan kernel yang diperlukan diinstal. Di masa lalu aku sudah pelanggan dan pengusaha menyiapkan sistem khusus (berbeda dari gambar produksi mereka) untuk tujuan tunggal mendukung I / O profil menggunakan atop. Namun teknik-teknik lain ini akan membantu Anda.

Saya yakin kami juga bisa melakukan sesuatu menggunakan SystemTap ... tapi saya tidak tahu ada resep mudah dimasak untuk melakukan ini. SystemTap sangat banyak alat analisis pemrograman.

Jim Dennis
sumber
jika Anda hanya ingin tahu proses mana yang memonopoli jaringan, bukan bandwidth sebenarnya yang digunakan, Anda bisa menggunakan netstat -anp --inet, dan memeriksa Recv-Qdan Send-Qkolom
golimar