Se eu tiver várias cópias do mesmo aplicativo no disco e apenas uma estiver em execução, como posso ver ps
, como posso saber o caminho absoluto para distingui-lo dos outros?
93
% sudo ls -l /proc/PID/exe
por exemplo:
% ps -auxwe | grep 24466 raiz 24466 0,0 0,0 1476 280? S 2009 0:00 supervisionar sshd % sudo ls -l / proc / 24466 / exe lrwxrwxrwx 1 raiz raiz 0 1 de fevereiro 18:05 / proc / 24466 / exe -> /package/admin/daemontools-0.76/command/supervise
ls
comando.ls: cannot read symbolic link /proc/28783/exe: Permission denied
- não se trata de executar ols
comando, trata-se de acessar as informações do processo de um processo que não pertence a você. Na minha caixa, cerca de 97% de todos os processos listados em / proc são processos raiz e os outros são distribuídos por 11 usuários diferentes.Usar:
Isso fornece o diretório de trabalho atual do pid, não o caminho absoluto.
Normalmente, o
which
comando informa qual está sendo invocado no shell:fonte
$pid
?" A postagem editada ainda não responde à pergunta.which
apenas diz "Se o comando está no caminho, então o que é?"pwdx
devolva-me o caminho absoluto do programa exectuable do processo, dependendo do pid no redhat x64 6.3.Uma maneira é ps -ef
fonte
Fonte:
https://serverfault.com/questions/62322/getting-full-path-of-executables-in-ps-auxwww-output
fonte
A resposta rápida é usar
ps
com as opções ou as/proc
informações do sistema de arquivos. Isso geralmente funciona, mas não é garantido. Em geral, não há resposta definitiva e garantida. Por exemplo, e se o arquivo em execução for excluído durante a execução, para que não haja caminho para o arquivo?Veja as Perguntas frequentes do Unix para um pouco mais de detalhes, principalmente as questões 4.3 e 4.4.
fonte
Por que todo mundo espera que você conheça o PID? Aqui está a maneira humana:
fonte
ps
”, por isso provavelmente vai mostrar o PIDlsof é uma opção. Você pode tentar algo como abaixo:
lsof -p PROCESS_ID
Isso listará todos os arquivos abertos pelo processo, incluindo a localização real do executável. É então possível adicionar um pouco mais de awk, cut, grep etc. para descobrir as informações que você está procurando.
Como exemplo, eu executei os seguintes comandos para identificar de onde veio o meu processo 'java':
lsof -p 12345 | awk '{print $ NF}' | grep 'java $'
fonte
Você poderia usar
ou
para obter o caminho absoluto. PID é o processo.
fonte