Jawaban:
Masalahnya /proc/PID/exe
adalah, untuk skrip shell, ini menunjukkan lokasi shell. Masalahnya /proc/PID/cwd
adalah yang menunjukkan direktori kerja saat ini dari proses. Jika proses mengubah direktori, itu tercermin dalam target symlink itu.
Ini akan menunjukkan apa $ PWD pada saat skrip dimulai (gantikan ID proses yang Anda minati di mana Anda melihat "PID"):
procdir=$(grep -az "\bPWD" /proc/PID/environ); echo $procdir
atau hanya:
grep -az "\bPWD" /proc/PID/environ
Ini akan menampilkan perintah yang memulainya sehingga Anda dapat melihat apakah direktori relatif atau absolut digunakan:
proccmd=$(grep -az PROC_NAME /proc/PID/cmdline); echo $proccmd
atau hanya:
grep -az PROC_NAME /proc/PID/cmdline
Bersama-sama, ini akan menunjukkan kepada Anda skrip mana yang sedang dijalankan. Untuk satu dimulai dengan ./
semua yang Anda butuhkan adalah procdir
.