Tingkat konseptual
Saat Anda memulai proses dari shell Anda, direktori kerja saat ini dari proses adalah sama dengan direktori kerja shell Anda saat ini. Dalam konteks shell, direktori kerja saat ini adalah lokasi Anda saat ini "di."
Direktori kerja saat ini dari proses apa pun digunakan untuk menafsirkan jalur relatif. Sebagai contoh, jika direktori kerja shell Anda saat ini adalah /home/rene
dan Anda berlari ls ..
dari shell, proses ini direktori kerja saat ini, /home/rene
, akan digunakan untuk tekad ..
untuk /home
.
Anda dapat melihat direktori kerja saat ini dari semua proses yang berjalan di sistem Anda dengan lsof | grep '\scwd\s'
(perhatikan bahwa Anda mungkin perlu menjadi root untuk melihat proses pengguna lain.) Ini dapat memberi Anda gambaran tentang bagaimana direktori kerja saat ini berhubungan dengan proses yang berjalan di sistem Anda.
Tingkat program
Direktori shell yang berfungsi saat ini adalah direktori yang Anda lihat dan modifikasi dengan built-in shell pwd
dan cd
masing - masing. Perintah-perintah ini memanggil panggilan sistem seperti getcwd
dan chdir
yang berfungsi dengan direktori kerja shell Anda saat ini.
Menggunakan bash
sebagai contoh, cd
built-in akhirnya menjalankan baris ini:
if (chdir (nolinks ? newdir : tdir) == 0)
dan pwd
built-in akhirnya menjalankan baris ini:
the_current_working_directory = getcwd (0, PATH_MAX);
Shell hanyalah contoh yang mudah digunakan direktori penggunaan saat ini; panggilan sistem yang sama juga digunakan oleh program lain. Suatu program dapat mengubah direktori kerjanya saat ini ke /usr
dan setiap jalur relatif yang menggunakan program akan mulai dari /usr
direktori,
Tingkat kernel
Direktori kerja saat ini dari suatu proses disimpan oleh kernel. Linux menyimpannya di pwd
anggota yang fs_struct
ditunjuk oleh fs
anggota a task_struct
. The pwd
anggota adalah path
struct, yang menunjuk ke informasi tentang gunung ( vfsmount
) dan lokasi direktori di filesystem ( dentry
). Setiap proses memiliki task_struct
keterkaitan dengannya.
The chdir
dan getcwd
sistem panggilan memodifikasi dan mengambil informasi di pwd
.
Setiap proses memiliki direktori kerja saat ini (CWD) yang ditugaskan ketika itu mulai. Anda dapat melakukan hal berikut untuk mengetahui direktori kerja untuk suatu proses.
Jalankan ps aux untuk mengetahui PID dari suatu proses:
Untuk mengetahui direktori kerja PID saat ini: 24532
Jadi proses (PID: 24532) memiliki CWD dari
/
.Ini contoh lain:
Kali ini proses sleep (PID: 15988) telah menetapkan CWD-nya ke direktori home saya
/home/sam
,.Anda juga dapat menjalankan
ls -l
perintah:-atau-
Di sini Anda dapat lagi melihat CWD untuk proses tersebut,
/
dan/home/sam
.Referensi
sumber