Podemos presumir que os arquivos não foram alterados no disco (pelo menos, nenhum arquivo com o mesmo nome foi adicionado ou excluído) e /proc/[pid]/cmdline
é confiável (veja a nota abaixo)?
De acordo com proc (5) : /proc/[pid]/environ
contém as variáveis de ambiente iniciais (que não será alterado mesmo que o próprio programa altere as variáveis de enventimento dentro), incluindo PWD
e PATH
.
Portanto:
se o caminho em cmdline
começar com o (s) nome (s) dir. relativo (s), você poderá usar PWD
(em /proc/[pid]/environ
) como o caminho base e resolver o caminho relativo;
Se o caminho em cmdline
for o nome do próprio programa, você poderá percorrer cada diretório em PATH
(em /proc/[pid]/environ
) e o destino será o arquivo primeiro com o mesmo nome.
Notas laterais:
/proc/[pid]/exe
parece ser o arquivo não referenciado (por exemplo, /usr/bin/python3.6
em vez de /usr/bin/python3
ou /usr/bin/python
se forem links simbólicos);
/proc/[pid]/cmdline
também pode conter informações estranhas para alguns programas, portanto pode não ser confiável. Isso parece estar relacionado ao programa, mas não ao kernel, e eu não observei nenhum script python se comportando desta maneira (e editar sys.argv
em python parece não afetar /proc/[pid]/cmdline
). Minha pergunta também falou um pouco sobre isso.