Solusi 1:
Saya suka lsof
, tapi saya pikir itu berlebihan untuk pertanyaan sederhana seperti ini. /proc
filesystem berisi semua yang ingin Anda ketahui. Mungkin contoh yang terbaik:
# ps ax|grep tail 7196 pts/4 S+ 0:00 tail -f /var/log/messages 8773 pts/0 R+ 0:00 grep tail # ls -l /proc/7196/cwd lrwxrwxrwx 1 insyte insyte 0 2009-07-29 19:05 /proc/7196/cwd -> /home/insyte # ls -l /proc/7196/fd total 0 lrwx------ 1 insyte insyte 64 2009-07-29 19:05 0 -> /dev/pts/4 lrwx------ 1 insyte insyte 64 2009-07-29 19:05 1 -> /dev/pts/4 lrwx------ 1 insyte insyte 64 2009-07-29 19:02 2 -> /dev/pts/4 lr-x------ 1 insyte insyte 64 2009-07-29 19:05 3 -> /var/log/messages
Jadi seperti yang Anda lihat, /proc/$PID
direktori berisi symlink yang disebut "cwd" yang menautkan CWD dari proses tersebut. Hal yang sama berlaku untuk deskriptor file terbuka yang terdaftar di /proc/$PID/fd
.
/proc/$PID
hierarki berisi banyak informasi tentang semua proses yang berjalan. Layak untuk dicoba!
Solusi 2:
Jika Anda memiliki perintah lsof tersedia [yang paling banyak *nix rasa] yang akan Anda gunakan:
lsof -p NNN
untuk membuat daftar file yang dibuka oleh proses NNN. Saya sudah lama tidak menggunakan BSD kecuali dari memori fuser sangat mirip dengan lsof.
Saya tidak yakin dengan perintah untuk menemukan cwd dari suatu proses tetapi pada Linux cwd disinkronkan ke direktori / proc dari proses yaitu. /proc/NNN/cwd.
Solusi 3:
jika Anda tahu PID prosesnya, Anda bisa mengeluarkan
lsof | grep YOURPID
Cepat dan mudah diingat.
atau
lsof -c yourprogramexecutable
Solusi 4:
Coba lsof jika diinstal di sistem Anda
D