Respostas:
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
.