Znalazłem ładny monitor, który pozwala mi rejestrować różne dane środowiska wykonawczego pojedynczego procesu. Szukam odpowiednika, który robi to samo w przypadku wykorzystania przepustowości. Najlepiej byłoby, gdyby polecenie wyglądało bwmon --pid 1 --log init.log
. Czy jest taki Czy może działać bez uprawnień administratora?
monitoring
bandwidth
tshepang
źródło
źródło
Odpowiedzi:
coś na początek (na wypadek, gdybyś chciał napisać to sam):
komentarze:
stat --printf="%N\n" /proc/PID/exe | cut -d ' ' -f 3
źródło
nc
parę klient / serwer przez localhost, wysyłając jeden bajt na sekundę i obserwowałem/proc/<listening-nc-pid>/net/dev
. Potem uruchomiłem drugąnc
parę, wysyłając z maksymalną szybkością. Plik, który oglądałem, w oczywisty sposób zliczał dane drugiej pary wraz z danymi pierwszej pary. Działa w systemie Linux 2.6.32.function strftime never defined
; zostało to naprawione przez zainstalowanie gawk ./proc/<pid>/net/dev
i/proc/net/dev
ma tę samą treść tutaj. Dlatego scipt zgłasza ruch tylko dla eth0, a nie dla danego procesu.eth0
, jak widać w procesie. To nie nie liczyć danych przesyłanych przez proces przez ten interfejs.Jeśli jesteś zadowolony z ogólnej przepustowości we / wy (lub jeśli twój program prawie całkowicie obsługuje sieciowe we / wy), możesz obejrzeć
/proc/<pid>/io
plik. Chcesz pólrchar
iwchar
. Możesz odjąćread_bytes
iwrite_bytes
, ponieważ reprezentują one odczyty i zapisy w warstwie pamięci. Patrz sekcja 3.3 http://www.kernel.org/doc/Documentation/filesystems/proc.txt .Jeśli potrzebujesz więcej rozdzielczości ... możesz to zrobić za pomocą skryptu
lsof
istrace
, choć bolesne byłoby prawidłowe załatwienie wszystkich przypadków. Podstawowym założeniem jest, aby analizować dane wyjściowestrace -p <pid>
, chwytając pierwszy parametr (= deskryptor pliku) oraz wartości zwracanej (= liczba bajtów) zread()
,write()
,send()
orazrecv()
połączenia ( UWAGA istnieją jeszcze kilka syscalli nasłuchiwać; I haven” śledził je wszystkie). Odrzucić wartości ujemne; wskazują błędy. Użyj,lsof -p <pid>
aby dowiedzieć się, które deskryptory plików są gniazdami TCP / UDP i zliczyć liczbę na fd. Ta strategia nie wymaga rootowania, dopóki jesteś właścicielem procesu, który sprawdzasz, ale pisanie byłoby naprawdę włochate, a co dopiero pisać dobrze.źródło
spróbuj Nethogs :
źródło