2012-01-13 2 views
3

리눅스 프로세스가 읽고 쓰는 총 바이트 수를 출력하고 싶습니다. 예를 들어, 나는리눅스 프로세스와 그 자식이 읽고 쓰는 총 바이트 수

gcc -c a.c 

을 실행하고 총 바이트 수의 어린이를 포함, GCC를 어떻게했는지보고 싶다, 리눅스 커널과 얼마나 많은 바이트가 커널로 전송에서 요청합니다. 이 문제에 대한

불완전한 솔루션은 다음과 같습니다

  • 필드 rchar/proc/PID/iowchar 지금까지 읽기/기록 된 바이트의 수를 보여줍니다. 그것은 자식 프로세스를 설명하지 않습니다. 프로세스가 종료 되 자마자 손실됩니다.

  • 도구 등 strace는 프로세스의 시스템 콜과 (예 : read, write 콜) 그 아이를 인쇄하는 데 사용할 수 있지만 바이트 수/기록 읽기 집계 할 수 없습니다.

Linux 프로세스 및 하위 프로세스가 읽고 쓰는 총 바이트 수를 인쇄하는 방법은 무엇입니까?

+0

왜 물어보고, 두 자식 프로세스 사이의 파이프 바이트를 어떻게 계산합니까? –

+0

@BasileStarynkevitch 두 자식 프로세스 사이의 파이프를 통해 전송 된 N 바이트는 N 바이트 기록, N 바이트 읽기로 계산됩니다. –

답변

10

조금 awk, 그리고 strace는 당신이 원하는 것입니다.

strace -e trace=read,write -o ls.log ls 

은 읽기 및 쓰기 시스템 호출의 로그를 제공합니다. 지금 당신은이 로그를 가지고 당신은 줄의 시작 부분 만 읽기 일치하도록 GREP을 변경할 수 wan't 수있는이

cat ls.log | grep read | awk 'BEGIN {FS="="}{ sum += $2} END {print sum}' 

처럼 마지막 열을 요약 할 수 있습니다.

+0

'strace' 접근법이 mmap'ed 파일 통계를 놓치지 않을까요? –

+0

이상한 값을 알려주세요 http://unix.stackexchange.com/questions/291156/why-rsync-does-not-do-delta-transfer –

+0

오류나 유사한 경우 어떻게 작동합니까? 예를 들어'O_NONBLOCK'이 설정되고 읽기가 차단 될 것입니다.)'read()'는 -1을 반환합니까? – 12431234123412341234123

1

iotop을 살펴보면 각 프로세스 (실시간 및 총 기록 및 읽기)의 디스크 사용량을 표시 할 수있는 최상위 도구입니다.

편집 :

또한 리눅스 박스를 모니터링하기위한 매우 강력한 보이는 sysstat를 확인할 수 있습니다. 문서에 따르면

다른 메트릭의 거대한 수를 모니터링 할 수 있습니다 : 네트워크 파일 시스템 당 및 Linux 작업 당, 파티션 당, 글로벌

  1. 입력/출력 및 전송 속도 통계 (장치 당을/PID).
  2. 가상화 아키텍처에 대한 지원을 포함하여 CPU 통계 (전역, CPU 당 및 Linux 작업/PID).
  3. 메모리, huge 페이지 및 스왑 공간 사용 통계.
  4. 가상 메모리, 페이징 및 오류 통계.
  5. 작업 별 (PID 단위) 메모리 및 페이지 오류 통계.
  6. 작업 및 모든 하위에 대한 전체 CPU 및 페이지 오류 통계.
  7. 프로세스 생성 작업.
  8. 인터럽트 통계 (CPU, 인터럽트 당 잠재적 인 APIC 인터럽트 소스, 하드웨어 및 소프트웨어 인터럽트를 포함한 글로벌).
  9. 광범위한 네트워크 통계 : 네트워크 장치로부터의 실패를 포함하여 네트워크 인터페이스 활동 (초당 수신 및 전송 된 패킷 수 및 KB 수). IP, TCP, 에 대한 네트워크 트래픽 통계 SNMPv2 표준을 기반으로하는 ICMP 및 UDP 프로토콜. IPv6 관련 프로토콜 지원.
  10. NFS 서버 및 클라이언트 작업.
  11. 소켓 통계.
  12. 대기열 및 시스템로드 통계를 실행합니다.
  13. 커널 내부 테이블 사용 통계.
  14. 시스템 및 Linux 작업 전환 활동.
  15. 스와핑 통계입니다.
  16. TTY 장치 동작.
  17. 전원 관리 통계 (즉석 및 평균 CPU 클록 주파수, 팬 속도, 장치 온도, 전압 입력, USB 장치가 시스템에 연결됨).

그리고 여기 당신은 특별 행정구의 some examples of usage합니다 (SYSSTAT 패키지의 기본 명령)을 찾을 수 있습니다.

+0

iotop은 디스크에서 읽거나 디스크에 쓴 데이터의 크기를 보여줍니다. 나는 이것이 유용한 정보라고 생각한다. 그러나 나의 질문은 결코 디스크에 닿지 않는 데이터를 포함하는 커널로부터 요청 된 바이트 수에 관한 것이다. –

+0

@Atom : 아, 죄송합니다. ** 모든 ** 커널과 교환 된 바이트 수를 계산하고 싶다는 사실을 눈치 채지 못했습니다. –

+1

@Atom : 다른 답변으로 업데이트했습니다. 도구, 거의 모든 것을 감시 할 수 있습니다. –