예를 들어 다음과 같은 내용을보고 싶습니다.
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 /
더 좋은 방법이 있습니까?
답변
내가 아는 한 당신이 달성하려고하는 것은 현재하고있는 것처럼 여러 명령을 결합하는 것이 가능하지만 데이터를 더 쉽게 파싱 할 수있는 다른 응용 프로그램을 알지 못합니다. 파이프 가능한 단일 행 텍스트 출력 모드). 영리한 쉘 스크립팅, 파이프 된 데이터 및 약간의 수동 형식을 사용하면 최소한 원하는 출력에 가깝게 얻을 수 있습니다.
운영 체제의 서로 다른 두 부분에서 제공되는 네트워크 및 파일 통계를 모두 보여주는 무언가에 대한 검색은 ‘The UNIX Philosophy :’의 일부 테넌트에 대한 것으로 보입니다.
- 각 프로그램이 한 가지 일을 잘하게하십시오. 새로운 일을하려면 새로운 기능을 추가하여 기존 프로그램을 복잡하게하지 않고 새로 구축하십시오.
- 모든 프로그램의 출력이 아직 알려지지 않은 다른 프로그램의 입력이 될 것으로 예상합니다. 불필요한 정보로 출력을 어지럽히 지 마십시오.
이것은 lsof와 같이 텍스트를 출력하는 프로그램에서 특히 분명합니다. 일반적으로 다른 프로그램에 파이프 할 데이터만큼 사용자 인터페이스를 제공하는 * NIX 콘솔 프로그램이나 cut 과 같은 쉘 명령 을 사용하여 자체적으로 맞춤화 된 출력을 작성 하는 스크립트는 표시되지 않습니다.
Doug McIlroy는 몇 년 후 그의 초기 진술을 다음과 같이 요약했습니다.
한 가지 일을 잘 수행하는 프로그램을 작성하십시오. 함께 일할 프로그램을 작성하십시오. 범용 인터페이스이므로 텍스트 스트림을 처리하는 프로그램을 작성하십시오.
원하는 형식의 출력을 얻는 데 도움이되지는 않지만 The Art of UNIX Programming 은 잘 읽었으며 인용문의 출처를 찾았습니다.
답변
답변
atop
파일 핸들로 I / O를 분해하는 것만 큼 구체적이지는 않지만 원하는 것을 제공하는 방법이 있습니다. 전체 네트워킹 통계를 얻으려면 커널 패치를 적용해야합니다.