Perintah apa yang dapat digunakan seseorang untuk mengetahui direktori kerja saat ini (CWD) dari proses yang sedang berjalan? Ini akan menjadi perintah yang bisa Anda gunakan secara eksternal dari proses.
168
Perintah apa yang dapat digunakan seseorang untuk mengetahui direktori kerja saat ini (CWD) dari proses yang sedang berjalan? Ini akan menjadi perintah yang bisa Anda gunakan secara eksternal dari proses.
Ada 3 metode yang saya ketahui:
$ pwdx <PID>
$ lsof -p <PID> | grep cwd
$ readlink -e /proc/<PID>/cwd
Katakanlah kita memiliki proses ini.
$ pgrep nautilus
12136
Maka jika kita menggunakan pwdx
:
$ pwdx 12136
12136: /home/saml
Atau Anda dapat menggunakan lsof
:
$ lsof -p 12136 | grep cwd
nautilus 12136 saml cwd DIR 253,2 32768 10354689 /home/saml
Atau Anda dapat menyodok langsung ke /proc
:
$ readlink -e /proc/12136/cwd/
/home/saml
/proc
.pwdx
bekerja untukku.pgrep <process-name>
Saya berasumsi bahwa Anda memiliki ID proses dalam
pid
. Sebagian besar metode pada kebanyakan sistem akan mengharuskan shell yang Anda gunakan menjalankan sebagai pengguna yang sama dengan proses target (atau root).Di Linux dan Solaris dan mungkin beberapa persatuan Sistem V lainnya:
Di Linux (kecuali sistem embedded
readlink
yang tidak tersedia) tetapi tidak Solaris:Pada hampir semua varian unix, Anda dapat menggunakan
lsof
. Hati-hati bahwa jika ada baris baru, itu akan dicetak sebagai\n
(tidak dapat dibedakan dari garis miring terbalik diikuti olehn
). Jika Anda merasa beruntung, Anda dapat menggunakan formulir kedua, yang secara diam-diam tersedak di semua spasi putih dalam nama direktori.Bonus: jika Anda perlu menyebabkan proses untuk mengubah direktori saat ini, Anda dapat melakukannya dengan debugger. Ini berguna misalnya untuk memindahkan program yang berjalan lama yang tidak peduli dengan direktori saat ini dari direktori yang ingin Anda hapus. Tidak semua program menghargai perubahan direktori saat ini di bawah kaki mereka - sebagai contoh shell kemungkinan besar akan crash.
sumber
pwdx
di Unix lain?pwdx
hadir di Solaris sejak abad ke-20, Linux sejak pertengahan 2000-an (meniru Solaris, kata halaman manual). Tidak hadir pada AFAIK unix lainnya.pwdx
ada?Jika sistem Anda memiliki
/proc
, Anda selalu dapat melakukan:Jika Anda ingin mengetahui CWD dari proses yang berbeda dari yang Anda minati, Anda jelas perlu mengganti
$$
dengan PID dari proses yang Anda minati.sumber
Berdasarkan jawaban @Gilles ..
jika Anda tahu PID proses Anda .. untuk Mac OSX dan Linux gunakan:
untuk mendapatkan dir dari proses ..
sumber