Ubuntu에서 프로그램이 사용하는 메모리를 확인하는 방법은 무엇입니까?

Ubuntu에서 프로그램이 사용하는 메모리를 확인하는 방법은 무엇입니까?

애플리케이션에서 사용하는 원시 메모리 데이터를 보는 방법은 무엇입니까? 예를 들어, 파일 이름이 something.sh. 이제 명령을 실행 ./something.sh한 다음 RAM에서 액세스하는 모든 데이터와 내 파일 시스템, 네트워크 데이터 또는 사용하는 연결에서 액세스하는 모든 파일을 보고 싶습니다. 애플리케이션에서 사용하는 메모리의 16진수 덤프일 수 있습니다. 우분투에서 할 수 있나요?

답변1

애플리케이션에서 사용하는 원시 메모리 데이터를 보는 방법...

일단 프로세스의 PID를 얻으면(다음을 사용하여)ps(1)또는pidof(8)예를 들어) /proc/PID/maps가상 주소 공간의 데이터를 사용하고 액세스 할 수 있습니다 /proc/PID/mem.Giles는 여기에 매우 자세한 답변을 썼습니다..

...그리고 내 파일 시스템, 네트워크 데이터 또는 연결에서 액세스하는 모든 파일

lsof그게 다야. netstat네트워크 관련 설명자에 더 적합할 수 있습니다. 예를 들어:

$ netstat -tln    # TCP connections, listening, don't resolve names.
$ netstat -uln    # UDP endpoints, listening, don't resolve names.
$ netstat -tuan   # TCP and UDP, all sorts, don't resolve names.
$ lsof -p PID     # "Files" opened by process PID.

노트: netstat스위치 -p를 사용하면 각 줄(적어도 사용자의 줄)과 관련된 프로세스를 인쇄할 수 있습니다. 특정 프로세스를 선택하려면 다음을 사용하면 됩니다 grep.

$ netstat -tlnp | grep skype    # TCP, listening, don't resolve (Skype).

이러한 도구에 대한 추가 정보:netstat(8)그리고lsof(8). 또한보십시오:proc(5) (그리고 다른 답변에서 언급된 도구).

답변2

부분 답변:

다음을 사용하여 실시간으로 액세스하는 파일을 볼 수 있습니다.

strace something.sh

특히 프로세스에서 수행된 모든 시스템 호출을 보여줍니다.

답변3

/proc이 정보는 가상 파일 시스템(Linux에서만)을 통해 얻을 수 있습니다 .

프로세스가 실행되는 동안 이 명령을 실행해 보세요( <pid>관찰된 프로세스의 PID로 대체).

grep 'VmSize' /proc/<pid>/status 

이 정보를 얻으려면 프로세스에 대한 읽기 액세스 권한이 있어야 합니다(소유하지 않은 경우 액세스할 수 없습니다).

제공된 모든 정보를 이해하려면 /proc/<pid>/status다음을 수행하십시오.

cat /proc/self/status

답변4

최소한의 정보에만 관심이 있다면 터미널에 sudo gnome-system-monitor를 입력해 보세요. 프로세스를 클릭합니다.

관련 정보