Linux - Tìm ra thư mục làm việc hiện tại của một quá trình?


11

Nếu tôi có một quy trình PID X, làm thế nào tôi có thể tìm ra thư mục nào nó đang chạy? Tôi có thể thấy với ps aux | grep Xdòng lệnh đầy đủ mà nó được gọi. Tuy nhiên trong trường hợp này là nó ./script.sh, và tôi muốn xem script.shnó đang chạy.

Câu trả lời:


11

Vấn đề với /proc/PID/exelà, đố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.


pwdx là tốt hơn thế này.
Bjorn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.