Ağ bant genişliğini ve çalışan işlemlerin dosya erişimlerini gösteren üste benzer bir komut var mı?


31

Örneğin, şunu görmek istiyoruz:

PROCESS       IF       TX       RX       FILE(regular) R/W
prog1         eth0     200kB/s  12kB/s   --            --
              wlan0    12kB/s   100kB/s  --            --
              --       --       --       file1         R
              --       --       --       file2         R
              --       --       --       file3         W
prog2         eth0     0kB/s    200kB/s  --            --
              --       --       --       file4         W
              --       --       --       file5         W

Mümkün mü? nethogs sadece TX / RX’i gösterirken, lsof sadece dosyaya erişimi gösterir.

Şu anda 2 adımlı bir işlem yapıyorum:

sudo nethogs
sudo lsof -a -d 1-999 -c hogging_program /

Daha iyi bir yolu var mı?

Yanıtlar:


5

Bildiğim kadarıyla hayır. Gerçekleştirmeye çalıştığınız şey, şu anda yaptığınız gibi birden çok komutu birleştirmekle mümkün olabilir, ancak verilerin ayrıştırılmasını kolaylaştıracak diğer uygulamaları bilmiyorum (ed: bilmediğim başka bir cevap önermedi. boruya uygun tek satır metin çıkış modu). Bazı akıllı kabuk komut dosyası, piped data ve biraz da elle biçimlendirme ile, en azından aradığınız çıktıya yaklaşabilirsiniz.

Hem işletim sistemini hem de işletim sisteminin iki farklı bölümünün sağlayacağı dosya istatistiklerini gösteren bir şey aramanız, 'UNIX Felsefesi:' nin bazı kiracılarına karşı görünüyor.

  • Her programın bir şeyi iyi yapmasını sağlayın. Yeni bir iş yapmak için, yeni özellikler ekleyerek eski programları karmaşıklaştırmak yerine yeniden oluştur
  • Her programın çıktısının henüz bilinmeyen bir programa başka bir programa girdi olmasını bekleyin. Çıktıları gereksiz bilgilerle karıştırmayın.

Bu özellikle lsof gibi metin çıkaran programlarda belirgindir. Genellikle * başka bir programa aktarılacak kadar kullanıcı arayüzü sağlayan * NIX konsol programlarını ya da kendi özel olarak uyarlanmış çıktılarını oluşturmak için cut gibi bir komut dosyası kullanan komut dosyası göremezsiniz .

Doug McIlroy yıllar önce yaptığı açıklamayı şöyle özetledi:

Bir şey yapan programları yaz ve iyi yap. Birlikte çalışmak için programlar yazın. Metin akışlarını işlemek için programlar yazın, çünkü bu evrensel bir arayüzdür.

Aradığınız formatı elde etmenize yardımcı olmasa da , UNIX Programlama Sanatı iyi bir okuma ve bu alıntılar için kaynakları buldum.


7
Bu soruya bir cevap vermiyor.
kedi

Mümkün mü? - Yapmaya çalıştığınız şeyin şu anda yaptığınız gibi birden çok komutu birleştirmenin muhtemelen en iyi (ve yalnızca bildiğim kadarıyla) mümkün olduğuna inanıyorum. - daha iyi bir yolu var mı? Çalıştığınız şeyin muhtemelen en iyisi ve sadece mümkün olan birden çok komutu ikna etmek olduğuna inanıyorum ... bazı akıllı kabuk komut dosyası ve pipo verileriyle, aradığınız çıktıyı [şekilde biçimlendirilmiş] alabilirsiniz. - hangi soruyu özledim? Borulu kabuk betikleri ile daha iyi cevaplanabilir, ancak faydalı geri bildiriminiz şunu söylememiştir: p çalışan bir betiğin doğru cevabı mı?
Aşırı

Başarmaya çalıştığın şeyin muhtemelen "bir soruyu cevapla" olarak tanımlandığına inanıyorum; birine felsefe dersi vermemek.
Gardner Bickford

Yanıtı daha açık bir şekilde ortaya koymaktayım. Felsefe dersi olmadan, kimse cevabın neden hayır olduğunu öğrenemez ve internete girip Linux Torvalds'ın akıllıca sözlerini asla anlayamaz; “Linux Felsefesi 'Tehlike karşısında gülmek!' Hata! Yanlış. 'Kendin yap.' Bu kadar."
overprescribed


6

atopistediğinizi vermenin bir yolunu buluyor, ancak I / O'yu fileto ile parçalamak kadar spesifik olmasa da. Tam ağ istatistiklerini elde etmek için bir çekirdek yaması uygulamanız gerekir.


2

iptraf çok faydalı olabilir ve bant genişliği domuzlarını bulabilir.


5
Daha fazla bilgi / açıklama eklemek cevabınızı daha iyi hale getirecektir.
mtk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.