Câu trả lời:
Vấn đề với /proc/PID/exe
là, đối với các kịch bản shell, nó hiển thị vị trí của shell. Vấn đề với /proc/PID/cwd
đó là hiển thị thư mục làm việc hiện tại của quy trình. Nếu quá trình thay đổi thư mục, điều đó được phản ánh trong mục tiêu của liên kết tượng trưng đó.
Điều này sẽ cho thấy $ PWD là gì tại thời điểm tập lệnh được bắt đầu (thay thế ID tiến trình mà bạn quan tâm ở nơi bạn thấy "PID"):
procdir=$(grep -az "\bPWD" /proc/PID/environ); echo $procdir
hoặc đơn giản:
grep -az "\bPWD" /proc/PID/environ
Điều này sẽ hiển thị lệnh đã khởi động nó để bạn có thể xem nếu một thư mục tương đối hoặc tuyệt đối đã được sử dụng:
proccmd=$(grep -az PROC_NAME /proc/PID/cmdline); echo $proccmd
hoặc đơn giản:
grep -az PROC_NAME /proc/PID/cmdline
Cùng nhau, những thứ này sẽ cho bạn thấy kịch bản nào đang được chạy. Đối với một bắt đầu với ./
tất cả những gì bạn cần là procdir
.