O problema com /proc/PID/exe
é que, para scripts de shell, ele mostra a localização do shell. O problema com /proc/PID/cwd
é que mostra o diretório de trabalho atual do processo. Se o processo mudar de diretório, isso será refletido no destino desse link simbólico.
Isso mostrará o que o $ PWD estava 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 a você qual script está sendo executado. Para começar com ./
, tudo que você precisa é procdir
.