애플리케이션에서 사용하는 원시 메모리 데이터를 보는 방법은 무엇입니까? 예를 들어, 파일 이름이 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를 입력해 보세요. 프로세스를 클릭합니다.