Ders 03 / 20
Dizin Hiyerarşisi
Tek köklü dosya ağacı, takma noktaları, standart dizin yerleşimi ve yolların adım adım çözümlenmesi; kurs boyunca kullanılacak proje ağacının kurulması.
İçindekiler
Komutlar dosyalar üzerinde çalışır; dosyalar da rastgele yerlerde durmaz. Unix sistemlerinde her dosyanın adresi, tek bir ağacın kökünden başlayan bir yoldur ve ağacın her dalının belirli bir anlamı vardır.
Bu ders yerleşimin mantığını kurar, bir yolun çekirdek tarafından nasıl çözümlendiğini
açıklar ve kurs boyunca üzerinde çalışılacak proje/ ağacını oluşturur.
Tek Kök
Dosya sistemi tek bir ağaçtır ve kökü / ile gösterilir. Sürücü harfi yoktur; ikinci bir
disk, ikinci bir ağaç açmaz. Bunun yerine diskler ağacın bir dalına takılır (mount).
Takma, bir depolama aygıtının içeriğini var olan bir dizin üzerinde görünür kılmaktır. Takıldıktan sonra o dizine giren bir program, farklı bir aygıta eriştiğini fark etmez; yol yine aynı ağacın parçasıdır. Aygıt sınırının nerede olduğu, yalnızca aygıtlar arası işlem yapılırken önem kazanır — sabit bağlantılar ve taşıma işlemleri dersinde bu sınırın neyi engellediği görülecektir.
Kökün üstü yoktur. Kök dizinde .. yine kökü gösterir:
$ cd / $ pwd / $ cd .. $ pwd /
Bu, hata değil tanımdır: ağacın en üstünde bir üst yoktur ve .. kendine döner. Yol
çözümlemesi bu sayede kökün dışına çıkamaz.
Standart Yerleşim
Kök altındaki dizinlerin adları ve işlevleri bir yerleşim standardıyla belirlenmiştir. Standart, hangi türden dosyanın nereye konacağını söyler; böylece bir yönetici tanımadığı bir sistemde de aradığını nerede bulacağını bilir.
| Dizin | İçerik |
|---|---|
/bin, /usr/bin |
Tüm kullanıcıların çalıştırdığı temel komutlar |
/sbin, /usr/sbin |
Sistem yönetimi komutları |
/lib, /usr/lib |
Paylaşılan kütüphaneler |
/etc |
Sisteme özgü yapılandırma dosyaları |
/home |
Kullanıcı ev dizinleri |
/root |
Süper kullanıcının ev dizini |
/var |
Boyutu değişen veriler: kütükler, kuyruklar, önbellekler |
/tmp |
Geçici dosyalar; yeniden başlatmada silinebilir |
/opt |
Paket yöneticisi dışında kurulan yazılımlar |
/dev |
Aygıt düğümleri |
/proc, /sys |
Çekirdek durumunu dosya olarak sunan sanal dosya sistemleri |
/boot |
Çekirdek görüntüsü ve önyükleyici dosyaları |
/mnt, /media |
Geçici takma noktaları |
Yerleşimin arkasında iki ayrım vardır. Birincisi değişen ile değişmeyen ayrımıdır:
/usr altındaki içerik yalnızca yazılım kurulunca değişir, /var altındaki içerik sistem
çalışırken sürekli değişir. İkincisi paylaşılabilir ile yerel ayrımıdır: /usr birden
çok makinede ortak kullanılabilir, /etc o makineye özgüdür. Bu iki ayrım, dizinlerin
ayrı bölümlere yerleştirilmesini ve farklı yedekleme politikaları uygulanmasını mümkün
kılar.
Standart bir yerleşim, tarihsel nedenlerle bölünmüş bazı dalları tek noktada birleştirir:
$ ls -l /bin /lib lrwxrwxrwx 1 root root 7 Apr 22 2024 /bin -> usr/bin lrwxrwxrwx 1 root root 7 Apr 22 2024 /lib -> usr/lib
Bu sistemde /bin ayrı bir dizin değil, /usr/bin’e işaret eden bir bağlantıdır.
/bin/ls ile /usr/bin/ls aynı dosyadır. Eski yolların çalışmaya devam etmesi, geriye
dönük uyumluluk içindir.
Mutlak ve Göreli Yol
Mutlak yol, kökten başlar ve / karakteriyle başlayan bir dizedir:
/home/ogrenci/proje/veri. Nerede olunursa olunsun aynı dosyayı gösterir.
Göreli yol, bulunulan dizinden başlar ve / ile başlamaz: veri/ham. Hangi dosyayı
gösterdiği, o anki çalışma dizinine (working directory) bağlıdır.
Çalışma dizini, kabuğun değil sürecin bir özelliğidir; her sürecin kendi çalışma dizini
vardır ve çocuk süreçler onu miras alır. pwd komutu bu değeri yazdırır.
Üç özel ad her dizinde geçerlidir:
.— bulunulan dizinin kendisi..— üst dizin~— ev dizini; bu bir dizin adı değil, kabuğun yaptığı bir açılımdır
. ve .. gerçek dizin girdileridir; çekirdek onları her dizinde tutar. ~ ise
kabuğa aittir ve komuta ulaşmadan önce ev dizininin mutlak yoluna çevrilir.
Yol Nasıl Çözümlenir
Bir yol, çekirdek tarafından bileşen bileşen çözümlenir. /home/ogrenci/proje yolu
için sıra şudur: kök dizin açılır, içinde home adı aranır, bulunan dizin açılır, içinde
ogrenci aranır, o dizin açılır, içinde proje aranır.
Bu adım adım yürüyüşün üç sonucu vardır ve üçü de kursun ilerleyen derslerinde tekrar karşımıza çıkar:
Her adım bir arama gerektirir. Yol ne kadar derinse o kadar çok dizin okunur.
Her ara dizinde geçiş izni aranır. Yolun sonundaki dosyaya erişmek için, yol
üzerindeki her dizinde çalıştırma izni gerekir. İzin bitleri dersinde bu, dizinler için
x bitinin neden “geçiş hakkı” anlamına geldiğini açıklayacaktır.
Ara bileşenler bağlantı olabilir. Yol üzerinde bir sembolik bağla karşılaşılırsa
çözümleme hedeften devam eder. /bin/ls yolunun /usr/bin/ls dosyasına varması bu
yüzdendir.
Göreli yol da aynı biçimde çözümlenir; tek farkı, kökten değil çalışma dizininden başlamasıdır:
$ cd /home/ogrenci/proje/veri $ pwd /home/ogrenci/proje/veri $ cd - / $ pwd /
cd - bir önceki dizine döner ve döndüğü dizini yazdırır. Bu, iki dizin arasında sık
geçiş yaparken kullanılan bir kısayoldur.
Gizli Dosyalar
Adı nokta ile başlayan dosyalar, listelemede varsayılan olarak gösterilmez:
$ ls proje $ ls -a . .. .bash_history .bash_logout .bashrc .profile proje
Bu bir güvenlik özelliği değil, bir görüntüleme geleneğidir. Çekirdek açısından nokta ile başlayan adın hiçbir ayrıcalığı yoktur; yalnızca listeleme araçları onları varsayılan olarak atlar. Gelenek, kullanıcı yapılandırma dosyalarının ev dizinini doldurmamasını sağlar.
ls -a çıktısındaki ilk iki girdi . ve ..’dır; her dizinde bulunan gerçek girdiler
oldukları burada görünür.
Proje Ağacının Kurulması
Kurs boyunca kullanılacak ağaç ev dizini altında kurulur. Ölçüm verisi, işlenmiş çıktı, betik, belge ve arşiv ayrı dallara yerleştirilir — kök altındaki yerleşimin küçük ölçekte yinelenmesi:
$ mkdir -p proje/veri/ham proje/veri/islenmis $ mkdir -p proje/betik proje/belge proje/arsiv $ find proje -type d | sort proje proje/arsiv proje/belge proje/betik proje/veri proje/veri/ham proje/veri/islenmis
mkdir normalde yalnızca tek düzey dizin oluşturur ve üst dizini yoksa hata verir. -p
seçeneği eksik ara dizinleri de oluşturur ve dizin zaten varsa hata vermez. İkinci
özellik, aynı komutun yeniden çalıştırılabilir olmasını sağlar.
find komutu bir ağacı özyinelemeli olarak dolaşır; -type d yalnızca dizinleri seçer.
Çıktı sıralı değildir — dosya sistemi girdileri sırasız döndürebilir — bu yüzden sort
ile sıralanmıştır.
Ağacın anlamı şudur: veri/ham dışarıdan gelen ve değiştirilmeyecek ölçüm dosyalarını,
veri/islenmis bunlardan türetilen çıktıları tutar. betik işlemi yapan programları,
belge açıklamaları, arsiv paketlenmiş sürümleri tutar. Ham veriyi ayrı ve dokunulmaz
tutmak, silme dersinde geri alınamazlık tartışmasının merkezinde olacaktır.
Özet
- Dosya sistemi tek köklüdür; ek diskler yeni bir ağaç açmaz, var olan bir dizine takılır.
- Kök altındaki yerleşim standarttır ve iki ayrıma dayanır: değişen/değişmeyen ve paylaşılabilir/yerel.
- Mutlak yol kökten, göreli yol çalışma dizininden başlar; çalışma dizini sürecin bir özelliğidir.
- Yol bileşen bileşen çözümlenir; her ara dizinde geçiş izni aranır ve ara bileşenler bağlantı olabilir.
- Nokta ile başlayan adların gizliliği bir listeleme geleneğidir, çekirdek düzeyinde bir ayrıcalık değildir.
mkdir -peksik ara dizinleri oluşturur ve var olan dizinde hata vermez.
Sonraki Adım
Ağaç kuruldu, ancak komutların seçenekleri ve davranışları henüz ezberle öğrenilmek durumunda. Sistemin kendisi bunu gereksiz kılar: her komutun kendi belgesi sistemde kuruludur ve belgeler numaralı bölümlere ayrılmış tutarlı bir yapı izler. Sonraki ders bu belgelerin nasıl okunacağını ve aynı adın farklı bölümlerde neden farklı şeyler anlatabildiğini gösterir.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.