예를 들어, 우리는 다음을 보고 싶습니다:
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
가능합니까? nethogs는 TX/RX만 표시하고 lsof는 파일 액세스만 표시합니다.
현재 다음과 같은 2단계 프로세스를 수행하고 있습니다.
sudo nethogs
sudo lsof -a -d 1-999 -c hogging_program /
더 좋은 방법이 있나요?
답변1
답변2
atop
파일 핸들을 통해 I/O를 분리하는 것만큼 구체적이지는 않지만 어떤 방식으로든 원하는 것을 얻을 수 있습니다. 완전한 네트워크 통계를 얻으려면 커널 패치를 적용해야 합니다.
답변3
내가 아는 한, 아니오. 당신이 달성하려는 것은 현재하고있는 것처럼 여러 명령을 결합하는 것입니다. 비록 나는 당신에게 더 쉬운 데이터를 제공하는 다른 응용 프로그램을 알지 못하지만 (편집 : 다른 대답은 iftop 을 제안했지만 나는 그렇지 않습니다. 추가된 Pipepable 단일 행 텍스트 출력 모드를 인식합니다). 영리한 쉘 스크립팅, 데이터 파이핑 및 일부 수동 형식화를 사용하면 최소한 원하는 출력에 근접할 수 있습니다.
네트워크 및 파일 통계(운영 체제의 서로 다른 두 부분에서 제공됨)를 표시하려는 검색은 "UNIX 철학"의 일부 테넌트에 어긋나는 것 같습니다.
- 각 프로그램이 한 가지 일을 잘 수행하도록 하세요. 새로운 작업을 수행하려면 새로운 기능을 추가하여 기존 프로그램을 복잡하게 만드는 대신 처음부터 다시 구축하세요.
- 각 프로그램의 출력은 다른 알려지지 않은 프로그램의 입력이 될 것으로 예상됩니다. 불필요한 정보로 출력을 복잡하게 만들지 마십시오.
이는 텍스트를 출력하는 프로그램(예: lsof)에서 특히 두드러집니다. 일반적으로 다른 프로그램에 데이터를 파이프하는 만큼 많은 사용자 인터페이스를 제공하는 *NIX 콘솔 프로그램은 표시되지 않으며 다음과 같은 셸 명령을 사용하는 스크립트는 표시되지 않을 수도 있습니다.자르다자신만의 특별히 맞춤화된 출력물을 만들어보세요.
몇 년 후 Doug McIlroy는 이전 발언을 다음과 같이 요약했습니다.
한 가지 일을 잘 수행하는 프로그램을 작성하세요. 함께 작동하는 프로그램을 작성하세요. 이는 일반적인 인터페이스이므로 텍스트 스트림을 처리하는 프로그램을 작성하십시오.
원하는 형식의 출력을 얻는 데 도움이 되지 않을 수도 있지만,UNIX 프로그래밍의 기술훌륭한 읽기 자료이며 이 인용문의 출처를 어디서 찾았습니까?
답변4
당신은 또한 고려할 수 있습니다인터넷돼지이것은 도구라는 제목으로 활발하게 유지 관리되는 프로젝트입니다 net top
.