Obtendo o caminho completo dos executáveis na saída ps auxwww

3

Considere as seguintes linhas de um "ps auxwww" output:

USER       PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
root      4262   0.0  0,1    76592   1104 s005  Ss   10:02am   0:00.03 login -pf yo
yo        4263   0.0  0,0    75964    956 s005  S    10:02am   0:00.03 -bash

Pergunta 1: Como forçar ps a expandir todos os comandos na coluna COMMAND para seus nomes de caminho completos? Eu quero que o login seja resolvido para / usr / bin / login e bash para / bin / bash.

Pergunta 2: Existe um equivalente ao procfs no MacOS X? Isto é - existe um mecanismo baseado em arquivo para obter facilmente informações sobre o processo?

    
por knorv 04.09.2009 / 10:15

4 respostas

5

Tente isso:

ps ax -o pid, cmd

Você pode reformatá-lo como quiser (leia a man page para detalhes).

Finalmente, acho que ps (e até cat / proc / * / cmdline) reportará o comando da forma como foi lançado. Então, se nenhum caminho completo foi dado, ele aparecerá como apenas "comando" em vez de "/ caminho / para / comando".

    
por 04.09.2009 / 18:26
4

Primeiramente, os processos podem alterar o título informado por ps , por isso não é muito confiável em si. Você poderia tentar as variáveis de ambiente usando o sinalizador 'e'.

ps auxwwwe

Dentro disso, deve ser uma variável incorporada como descrita aqui.

For every command that is run as a child of the shell, sh sets this variable to the full path name of the executable file and passes this value through the environment to that child process.

Isso vale para sh no BSD como o Linux. Eu acredito que isso não pode ser substituído pelo usuário. No entanto, a disponibilidade pode depender da escolha do shell do usuário, é bastante desagradável e YMMV.

O OSX não possui um procfs nativo. Existe uma porta baseada no FUSE. Detalhes podem ser encontrados aqui . Mais uma vez YMMV.

    
por 04.09.2009 / 11:58
0

Pare de brincar com ps e use cat / proc / pid / cmdline .

Você pode usar caracteres curinga, como / proc / * / cmdline.

    
por 04.09.2009 / 14:27
0

extraia todos os ids de processo e caminho completo de / proc:

ls -l /proc/*/exe 2>/dev/null | awk '{print $8 " " $10}'
    
por 11.09.2014 / 10:55