Localiza um diretório de um caminho relativo na saída do ps

5

Quando eu executei o comando para dar o pid dos meus processos em execução, isso me deu assim -

user@machineA:/$ ps -eo pid,command | grep exhibitor | grep java | grep -v grep
 1615 java -jar ./exhibitor-1.2.3/lib/exhibitor-1.2.3-jar-with-dependencies.jar --fsconfigdir /opt/exhibitor/conf --hostname machineA

Agora vi este caminho na saída acima -

./exhibitor-1.2.3/lib/exhibitor-1.2.3-jar-with-dependencies.jar

Agora estou tentando entender onde esta pasta é ./exhibitor-1.2.3/ , pois não consigo descobrir. Esta pasta está na mesma máquina do Ubuntu? Existe alguma maneira de descobrir esse diretório onde está?

Estou executando o Ubuntu 12.04

    
por SSH 19.12.2013 / 01:01

3 respostas

4

O nome do arquivo é relativo ao diretório atual no momento em que o processo Java tentou acessá-lo. Não há maneira de determinar isso. Você pode ver o diretório atual do processo:

ls -l /proc/1615/cwd

Se o processo ainda tiver o arquivo aberto, você poderá descobrir facilmente onde ele está.

ls -l /proc/1615/fd

Se você não puder encontrar o arquivo dessa forma porque o programa mudou seu diretório atual, você pode tentar verificar o diretório atual do processo pai, se o processo pai ainda estiver ativo. Use ps l 1615 para ver o PID (PPID) do processo pai e, em seguida, observe o cwd do processo pai.

Se isso falhar, você pode usar o comando locate para pesquisar arquivos com um determinado nome.

locate exhibitor-1.2.3-jar-with-dependencies.jar

O comando locate pesquisa um índice que é atualizado todas as noites (ou em horários variáveis, se você desligar o computador à noite), portanto, se você instalou o arquivo recentemente, talvez não o encontre dessa maneira.

Em desespero, você pode usar o comando find para procurar o arquivo em uma hierarquia de diretórios. Por exemplo, se você suspeitar que o arquivo está em seu diretório pessoal:

find ~ -name exhibitor-1.2.3-jar-with-dependencies.jar

Para procurar em todos os lugares nos diretórios do sistema:

find / -xdev -name exhibitor-1.2.3-jar-with-dependencies.jar
    
por 19.12.2013 / 01:13
2

Você pode ler o diretório atual do processo:

readlink /proc/1615/cwd

Isso só funcionará para determinar esse caminho relativo se o processo não tiver alterado seu diretório de trabalho desde que foi executado. Outra coisa a notar é que os processos podem alterar seu nome de comando (o que é exibido no PS), por isso não deve ser invocado.

    
por 19.12.2013 / 01:09
0

Use find

find / -name exhibitor-1.2.3 -type d -print

Isso encontrará todos os nomes de diretórios exhibitor-1.2.3 em seu sistema.

    
por 19.12.2013 / 01:14

Tags