Linux - Descubra o diretório de trabalho atual de um processo?


11

Se eu tiver um processo PID X, como posso descobrir em que diretório ele estava sendo executado? Eu posso ver com ps aux | grep Xa linha de comando completa com a qual ele foi chamado. No entanto, neste caso, é ./script.sh, e eu quero ver qual script.shestá sendo executado.

Respostas:


11

O problema /proc/PID/exeé que, para scripts de shell, ele mostra a localização do shell. O problema /proc/PID/cwdé que isso mostra o diretório de trabalho atual do processo. Se o processo alterar os diretórios, isso será refletido no destino desse link simbólico.

Isso mostrará qual era o $ PWD no momento em que o script foi iniciado (substitua o ID do processo em que você está interessado, onde você vê "PID"):

procdir=$(grep -az "\bPWD" /proc/PID/environ); echo $procdir

ou simplesmente:

grep -az "\bPWD" /proc/PID/environ

Isso mostrará o comando que o iniciou para que você possa ver se um diretório relativo ou absoluto foi usado:

proccmd=$(grep -az PROC_NAME /proc/PID/cmdline); echo $proccmd

ou simplesmente:

grep -az PROC_NAME /proc/PID/cmdline

Juntos, eles devem mostrar qual script está sendo executado. Para começar, ./tudo o que você precisa é procdir.


pwdx é melhor que isso.
Bjorn

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.