No Aix existe algum comando que dê um caminho ou link para o executável do processo em / proc / pid

3

Eu tentei ls -l /proc/17301504 não há exe que me dê caminho completo para o comando. Existe uma maneira de obter o caminho completo do comando no Aix 5 e acima, como no Linux?

Existe a.out em /proc/17301504/object que tem a mesma soma de verificação que o comando, mas não fornece o caminho completo.

    
por Ayushi 23.09.2017 / 09:58

2 respostas

2

O sistema de arquivos /proc não é inerentemente portátil entre os sistemas operacionais. Existem Unices onde não existe de todo.

O sistema de arquivos /proc no AIX está documentado aqui: link

Sobre o arquivo a.out no subdiretório object , ele diz:

[...] The name a.out also appears in the directory as a synonym for the executable file associated with the text of the running process.

The object directory makes it possible for a controlling process to get access to the object file and any shared libraries (and consequently the symbol tables), without the process first obtaining the specific path names of those files.

Isso significa que acessar o arquivo a.out nessa estrutura é mais ou menos o oposto do que você deseja fazer. Permite que um programa de usuário acesse o executável de um processo sem conhecer seu caminho completo.

Há também estruturas em /proc no AIX que contém o nome base do executável, mas, novamente, não é isso que você está interessado.

Como um processo pode definir seu próprio argumento de linha de comando zeroth (o nome do processo que aparece em ps ), usar ps também não seria uma solução infalível para encontrar o caminho absoluto para o executável em execução, mesmo que tenha sido executado com um caminho completo.

O que você poderia fazer é caçar o executável por seu inode.

Um exemplo de como fazer isso é descrito na resposta aceita atualmente à pergunta " Como identificar o caminho do executável com seu PID no AIX 5 ou mais ".

Também pode ser bom se perguntar por que você precisa dessas informações ao consultar um processo em execução , já que normalmente é claro estudar um script ou programa exatamente quais utilitários externos está invocando.

    
por 23.09.2017 / 10:36
1

Obtenha o inode e o número principal / secundário com o comando istat de /proc/<pid>/object/a.out :

$ istat a.out
Inode 4694 on device 10/5       File
Protection: r-xr-xr--   Set UID 
Owner: 0(root)          Group: 0(system)
Link count:   1         Length 82411 bytes

Last updated:   Fri May  4 13:58:53 PDT 2018
Last modified:  Wed Nov 29 10:40:56 PST 2017
Last accessed:  Wed Sep  5 14:51:07 PDT 2018

Obtenha o nome do sistema de arquivos do número maior / menor

$ ls -l /dev/* | grep 10, | grep ' 5 '
brw-rw----    1 root     system       10,  5 Jul 03 2017  /dev/hd2
crw-rw----    1 root     system       10,  5 Jul 03 2017  /dev/rhd2

$ df /dev/hd2
Filesystem    512-blocks      Free %Used    Iused %Iused Mounted on
/dev/hd2        10944512   2220824   80%    41861     4% /usr

Obtenha o nome do arquivo do inode

$ find /usr -inum 4694 -exec /bin/ls -l {} \;
-r-sr-xr--    1 root     system        82411 Nov 29 2017  /usr/sbin/inetd
    
por 05.09.2018 / 23:58