İçeriğe geç
academia.sh

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 -p eksik 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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat