Linux - Cari tahu direktori kerja saat ini dari suatu proses?


11

Jika saya memiliki proses PID X, bagaimana saya bisa mengetahui direktori apa yang sedang berjalan? Saya bisa melihat dengan ps aux | grep Xbaris perintah penuh yang dipanggil. Namun dalam hal ini ./script.sh, dan saya ingin melihat yang script.shsedang berjalan.

Jawaban:


11

Masalahnya /proc/PID/exeadalah, untuk skrip shell, ini menunjukkan lokasi shell. Masalahnya /proc/PID/cwdadalah 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.


pwdx lebih baik dari ini.
Bjorn

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.