O que eu preciso: uma lista de todos os executáveis em execução no momento com seu caminho completo.
Algo assim:
1234 /caminho/completo/para/executável 4567 /caminho/completo/para/executável2
Usando UNIX95= ps -exo pid,comm
posso obter uma lista com PIDs e comandos como este
11146 /opt/wbem/lbin/cimprovagt 0 4 8 root IOTreeModule 8338 /opt/ssh/libexec/sftp-server 16684 postgres: sfmdb evweb [local] inativo 2518 /usr/sbin/stm/uut/bin/tools/monitor/WbemWrapperMonitor 2264 /usr/sbin/psb/bin/diagtxd 8340-sh 7772 sshd: root@pts/0 8333 sshd: root@pts/1 7777 /opt/ssh/libexec/sftp-server
Isso é o mais próximo que consegui usar ps
, mas não é bom o suficiente:
- Algumas linhas não incluem o caminho completo (aparentemente porque não são iniciadas usando o caminho completo).
- Dados extras após o nome do executável (preciso oferecer suporte a executáveis com espaços no nome, para não poder simplesmente dividir a string)
Como tal, concluí que isso ps
não me levará até o fim.
Existe um equivalente ao /proc do Linux onde /proc/{pid}/exe aponta para o executável? Se não, existe outra maneira de conseguir isso?
Desde já, obrigado,
Responder1
pfiles <pid>
pode listar o caminho completo para o executável.
Exemplo:
Trecho deUNIX95=1 ps -efo pid,comm
1666 cimprovagt
Agora vamos correrpfiles 1666
1666: /opt/wbem/lbin/cimprovagt
0: S_ISCHR mode:666 dev:64,3 ino:124 uid:2 gid:2 rdev:3,2
flags = O_RDONLY|O_LARGEFILE
file = /dev/null
A primeira linha mostra o caminho completo para o executável. Isso é bom o suficiente para meus propósitos.