Como você vê a memória usada por um programa no Ubuntu?

6

Como posso ver os dados de memória brutos usados por um aplicativo? Por exemplo, suponha que eu tenha um nome de arquivo something.sh . Agora eu executo o comando ./something.sh , e aí eu quero ver todos os dados acessando no ram e todos os arquivos acessando no meu sistema de arquivos, dados da rede ou conexão está usando.Pode ser o hex dump da memória utilizada por esta aplicação . Posso fazer isso no Ubuntu?

    
por Tamim Addari 15.08.2015 / 07:36

4 respostas

6

How can I see the raw memory data used by an application...

Depois de obter o processo 'PID (usando ps(1) ou pidof(8) por exemplo), você pode acessar os dados em seu espaço de endereço virtual usando /proc/PID/maps e /proc/PID/mem . Gilles escreveu uma resposta muito detalhada sobre isso aqui .

... and all the files its accessing in my filesystem, network data or connections

lsof pode fazer isso. netstat pode ser mais apropriado para descritores relacionados à rede. Por exemplo:

$ 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.

Observação : A opção netstat do -p permitirá que você imprima o processo associado a cada linha (pelo menos, seus processos). Para selecionar um processo específico, você pode simplesmente usar grep :

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

Para obter mais informações sobre essas ferramentas: netstat(8) e lsof(8) . Veja também: proc(5) (e as ferramentas mencionadas em outras respostas) .

    
por 15.08.2015 / 11:08
4

Resposta parcial:

Você pode ver os arquivos acessados em tempo real usando

strace something.sh

Especificamente, mostra todas as chamadas do sistema feitas pelo processo.

    
por 15.08.2015 / 08:37
4

Você pode obter essas informações através do sistema de arquivos virtual /proc (somente no Linux).

Tente executar este comando quando o processo estiver em execução (substitua o <pid> pelo PID do processo observado):

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

Cuidado, você precisa ter acesso de leitura ao processo para obter essas informações (você não poderá acessá-las se não for o proprietário)!

Se você quiser saber todas as informações fornecidas por /proc/<pid>/status , faça:

cat /proc/self/status
    
por 15.08.2015 / 10:21
2

Se você está apenas interessado em informações mínimas, tente no terminal, digite sudo gnome-system-monitor. Clique nos processos.

    
por 15.08.2015 / 21:00