Jak monitorować użycie sieci dla procesów w systemie Linux

Photo of author

By maciekx

Dostęp do sieci internetowej stał się nieodłącznym elementem naszej codzienności. Zastanawiasz się zapewne, które procesy działające w systemie Linux najbardziej obciążają twoje łącze? Na szczęście, dzięki kilku popularnym narzędziom, monitorowanie wykorzystania przepustowości przez poszczególne procesy jest w Linuksie wyjątkowo proste. Oto kilka z nich, które z pewnością Ci w tym pomogą.

MATERIAŁ WIDEO DNIA

PRZEWIŃ, BY PRZEJŚĆ DO TREŚCI

1. Nethogs

Nethogs to narzędzie, które dla ruchu sieciowego robi to, co htop czy top robią dla obciążenia procesora i pamięci. Ukazuje w czasie rzeczywistym, które konkretnie procesy korzystają z zasobów sieciowych.

Podobnie jak top, htop czy atop, Nethogs prezentuje informacje w trybie pełnoekranowym, odświeżając dane co kilka sekund. Pozwala to na bieżąco śledzić aktywność sieciową z podziałem na procesy.

Instalacja Nethogs jest bardzo intuicyjna i ogranicza się do użycia menedżera pakietów charakterystycznego dla Twojej dystrybucji.

Na przykład, w systemach Debian i Ubuntu instalacja odbywa się za pomocą komendy:

 sudo apt install nethogs 

Natomiast w Arch Linuxie:

 sudo pacman -S nethogs 

W systemach z rodziny Red Hat:

 sudo dnf install nethogs 

Aby uruchomić nethogs, niezbędne są uprawnienia administratora (root):

 sudo nethogs 

Możliwe jest też skonfigurowanie nethogs tak, aby mógł być uruchamiany przez zwykłego użytkownika. W tym celu należy użyć poniższego polecenia:

 sudo setcap "cap_net_admin,cap_net_raw+pe" /path/to/nethogs 

Pamiętaj, aby w powyższej komendzie zamienić „/ścieżka/do/nethogs” na rzeczywistą ścieżkę dostępu do pliku wykonywalnego nethogs. Możesz ją łatwo odnaleźć za pomocą polecenia:

 which nethogs 

2. Lsof

Lsof, chociaż służy głównie do wyświetlania otwartych plików, z powodzeniem może prezentować otwarte połączenia sieciowe. Opcja `-i` sprawia, że wyświetlana jest lista połączeń internetowych powiązanych z działającymi procesami. W końcu, w systemie Linux „wszystko jest plikiem”.

Aby wyświetlić aktywne połączenia sieciowe, skorzystaj z poniższej komendy:

 lsof -i 

Lsof wyświetli informacje o nazwie polecenia, które otworzyło dane połączenie, jego PID, deskryptor pliku, typ połączenia, rozmiar, protokół i pełną ścieżkę pliku powiązanego z połączeniem.

Opcje `-i4` i `-i6` pozwalają na wyświetlenie połączeń korzystających odpowiednio z protokołu IPv4 lub IPv6.

Jest bardzo prawdopodobne, że lsof jest już zainstalowany w Twoim systemie. Jeśli jednak go nie posiadasz, instalacja w popularnych dystrybucjach Linuxa jest bardzo prosta.

W systemach Debian i Ubuntu instalację przeprowadzisz za pomocą:

 sudo apt install lsof 

W Arch Linuxie:

 sudo pacman -S lsof 

Natomiast w dystrybucjach z rodziny Red Hat:

 sudo dnf install lsof 

3. Netstat

Netstat jest rozbudowanym narzędziem służącym do wyświetlania połączeń sieciowych w systemie. Domyślnie nie pokazuje, które procesy są powiązane z poszczególnymi połączeniami. Jednak, podobnie jak w przypadku lsof, odpowiednia opcja w wierszu poleceń umożliwia wyświetlenie tych informacji.

Netstat jest częścią pakietu net-tools. Możesz go zainstalować w większości dystrybucji Linuksa za pomocą domyślnego menedżera pakietów.

Na przykład, w systemach Debian lub Ubuntu:

 sudo apt install net-tools 

W Arch Linuxie:

 sudo pacman -S net-tools 

Aby zainstalować netstat w Fedorze, CentOS i RHEL, wykonaj:

 sudo dnf install net-tools 

Netstat możesz uruchomić bezpośrednio w wierszu poleceń. Domyślnie wyświetli informacje takie jak protokół, adres i stan połączenia. Opcja `-p` dodaje kolumnę, która prezentuje identyfikator procesu (PID) i nazwę polecenia.

 netstat -p 

Po uruchomieniu, netstat wyświetli listę wszystkich połączeń sieciowych, a następnie zakończy działanie. Użycie opcji `-c` sprawia, że lista jest na bieżąco aktualizowana:

 netstat -pc 

Działanie takie przypomina użycie narzędzia działającego w trybie pełnoekranowym, takiego jak Nethogs. Zaletą tego rozwiązania jest możliwość przekazania wyjścia z netstat do innych programów, takich jak grep czy pager, co pozwala na szczegółową analizę danych:

 netstat -p | grep 'systemd' 

Aby wyświetlić wszystkie procesy z aktywnymi połączeniami sieciowymi, konieczne może być uruchomienie netstat z uprawnieniami administratora (root):

 sudo netstat  

Teraz możesz łatwo monitorować, które aplikacje w systemie Linux zużywają Twoją przepustowość

Linux, podobnie jak wiele nowoczesnych systemów operacyjnych, jest silnie zintegrowany z Internetem. Czasami śledzenie, które procesy pochłaniają największą część przepustowości, bywa utrudnione. Dzięki narzędziom takim jak nethogs, lsof i netstat, możesz skutecznie monitorować procesy utrzymujące otwarte połączenia sieciowe.

Procesy, w przypadku połączeń, mogą czasami działać nieprawidłowo. W systemie Linux bez problemu możesz zakończyć działanie każdego takiego „nieuczciwego” procesu.


newsblog.pl