프로세스의 가상 스토리지 크기를 지속적으로 얻는 방법은 무엇입니까?

프로세스의 가상 스토리지 크기를 지속적으로 얻는 방법은 무엇입니까?

우리 모두는 top명령이 실행 중인 프로세스를 지속적으로 모니터링한다는 것을 알고 있습니다. 임베디드 Linux에서 지속적으로 실행되는 응용 프로그램이 있고 명령을 통해 해당 VSZ(가상 저장소 크기) 값을 모니터링해야 합니다. top즉, 응용 프로그램이 실행되는 동안 매 시간마다 VSZ 값을 가져와 기록합니다(기본적으로 적어도 먼저 값을 얻으십시오). 이 경우 VSZ 값을 얻는 방법은 무엇입니까? C/C++, bash 또는 다른 방법으로 가능합니까? 미리 감사드립니다.

답변1

/proc/[PID]/statLinux 커널을 사용하면 (에 정의된 ) 을 참조할 수 있습니다 /usr/src/linux/fs/proc/array.c. 여기에는 여러 필드가 포함되어 있으며 23번째는 바이트 단위의 가상 메모리 크기입니다(참고자료 참조 man proc).

/proc/[PID]/statm또는 페이지의 메모리에 대한 값만 포함하거나 사람이 읽기 쉬운 값만 포함하는 값을 사용할 수도 있습니다 /proc/[PID]/status.

이 모든 정보는 에 자세히 설명되어 있습니다 man proc.

cat이 파일을 보려면 명령을 사용하십시오 .

답변2

ps -eo vsz,commVSZ 및 명령 값을 나열할 수 있습니다 . 그런 다음 이를 다음과 같이 서브루틴(셸 스크립트)으로 결합할 수 있습니다.

while true
do
    ps -eo vsz,comm | grep process-i-want >> /path/to/output
    sleep 1
done

출력을 보고 기록하려면 로 바꿀 수도 있습니다 >> /path/to/output.| tee /path/to/output

관련 정보