|
|
Bu makalenin farklı dillerde bulunduğu adresler: English Castellano ChineseGB Deutsch Francais Nederlands Russian Turkce Polish |
Sandeep Grover <sandeep<at>Magma-DA.com> Yazar hakkında: Sandeep Grover Hindastan'ın en hızlı gelişen elektronik tasarım ve otomasyon şirketlerinden Magma Design Automation'da çalışmaktadır. Boş zamanlarında Linux çekirdeğinin yapısını keşfetmekle uğraşmakta ve bir gün ona katkıda bulunmak istemektedir! Türkçe'ye çeviri: Erdal Mutlu <erdal(at)linuxfocus.org> İçerik:
|
Proc dosya sistemini anlamakÖzet:
/proc dosya sistemi sayesinde Linux, iç veri yapılarına erişmeyi ve sistem çalışır durumdayken yapılandırmayı sağlamaktadır. Temelde konular pek fazla farklılık göstermemesine karşın, biz burada sadece Linux'un İntel x86 mimarisinden sözedeceğiz. |
/proc dosya sistemi, çekirdek ve çekirdek modüllerinin programlara bilgi vermek için oluşturulmuş bir yöntemdir. Sanal bir dosya sistemi olan proc, çekirdeğin iç veri yapıları hakkında bilgi almak, sistemde çalışmakta olan programlar hakkında kullanışlı bilgiler edinmek ve çekirdeğin parametrelerini değiştirerek, çalışmakta olan sistemde yapılandırmalar yapılmasını sağlamaktadır. Diğer dosya sistemleri diskte iken proc, geçici bellekte yeralmaktadır. mount komutu gibi, sistemde bağlanmış tüm dosya sistemlerini listeleyen /proc/mounts dosyasına bir gözatarsanız, aşağıdaki gibi bir satır göreceksiniz:
grep proc /proc/mounts /proc /proc proc rw 0 0
/proc çekirdek tarafından denetlemekte ve bir aygıta bağlı değildir. Genellikle durum bilgileri içerdiğinden, proc dosya sistemini çekirdeğin yönettiği geçici belleğe yerleştirmek en mantıklı seçimdir. /proc'da 'ls -l' komutunu çalıştırırsanız, çoğu dosyanın 0 byte büyüklüğünde olduğu göreceksiniz. Eğer, dosya içeriğine bakacak olursanız, içinde birçok bilginin yeraldığını göreceksiniz. Bu nasıl olmaktadır? Bunun nedeni, /proc dosya sistemi, diğer sıradan dosya sistemleri gibi, kendisini Sanal Dosya Sistemi (SDS) (VMS) katmanına kaydettirmektedir. Ancak, SDS dosya veya dizinler hakkında i-node'lar ile ilgili sistem çağrıları kullandığında, /proc dosya sistemi bu dosya veya dizinleri, çekirdek içerisindeki bilgilerden yaratmaktadır.
Eğer, daha önceden bağlanmamış ise, proc dosya sistemini
aşağıdaki komutu kullanarak bağlayabilirsiniz:
mount -t proc proc /proc
Yukarıdaki komut başarılı bir şekilde bağlama işlemi yerine getirecektir. Daha fazla bilgi için mount komutunun man sayfasına bakınız./proc'taki dosyalardan, bilgisayarınızın özellikleri, çekirdeğin ve çalışan programların durumları gibi bilgiler edinebilirsiniz. /proc'taki birçok dosya, sisteminizin donanımsal ortamı hakkındaki en son kullanım durumunu yansıtmaktadır. Her nekadar, /proc'taki dosyalar sanal olsalar da, dosyaların içeriğini, çeşitli kelime işlemcileri veya 'more', 'less', 'cat' gibi komutlarla görüntüleyebilirsiniz. Herhangi bir kelime işlemci burada yer alan bir dosyayı açmaya kalkıştığında, dosya çekirdek bilgilerinden otomatik olarak oluşturulmaktadır. İşte size benim bilgisayardan elde etmiş olduğum bazı ilginç sonuçlar:
$ ls -l /proc/cpuinfo -r--r--r-- 1 root root 0 Dec 25 11:01 /proc/cpuinfo $ file /proc/cpuinfo /proc/cpuinfo: empty $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Pentium III (Coppermine) stepping : 6 cpu MHz : 1000.119 cache size : 256 KB fdiv_bug : no hlt_bug : no sep_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr xmm bogomips : 1998.85 processor : 3 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Pentium III (Coppermine) stepping : 6 cpu MHz : 1000.119 cache size : 256 KB fdiv_bug : no hlt_bug : no sep_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr xmm bogomips : 1992.29
Proc dosya sistemi, sistem ve çekirdek hakkında yararlı bilgilere
ulaşmak için kullanılabilir. Bazı önemli dosyalar aşağıda listelenmiştir:
/proc dosya sistemi, çalışmakta olan tüm programlar hakkında bilgi sahibi olmanızı sağlamaktadır. /proc dizininde isimleri numara olan dizinler vardır. Herbir numara bir program numarasına (PID) karşılık gelmektedir. Dolayısıyla, her çalışan program için /proc'ta kendi program numarasını taşıyan bir dizin yaratılmıştır. Bu dizinler içerisinde, programın durumu ve ortamı hakkında bilgiler veren dosyalar vardır. İsterseniz şimdi çalışan bir programı araştıralım:
$ ps -aef | grep mozilla root 32558 32425 8 22:53 pts/1 00:01:23 /usr/bin/mozilla
$ ls -l /proc/32558 total 0 -r--r--r-- 1 root root 0 Dec 25 22:59 cmdline -r--r--r-- 1 root root 0 Dec 25 22:59 cpu lrwxrwxrwx 1 root root 0 Dec 25 22:59 cwd -> /proc/ -r-------- 1 root root 0 Dec 25 22:59 environ lrwxrwxrwx 1 root root 0 Dec 25 22:59 exe -> /usr/bin/mozilla* dr-x------ 2 root root 0 Dec 25 22:59 fd/ -r--r--r-- 1 root root 0 Dec 25 22:59 maps -rw------- 1 root root 0 Dec 25 22:59 mem -r--r--r-- 1 root root 0 Dec 25 22:59 mounts lrwxrwxrwx 1 root root 0 Dec 25 22:59 root -> // -r--r--r-- 1 root root 0 Dec 25 22:59 stat -r--r--r-- 1 root root 0 Dec 25 22:59 statm -r--r--r-- 1 root root 0 Dec 25 22:59 status
/proc/self, bir programın kendisi hakkındaki bilgilere ulaşmak için kullanılabilecek ilginç bir dizindir. /proc/self, /proc dizinine ulaşan programın /proc'ta yeralan dizinine bir sembolik bağlantıdır.
Yukarıda sözünü ettiğimiz ve /proc'ta yeralan dosyaların çoğu
sadece okunabilirdir. Ancak, çekirdekle etkileşimi
sağlamaya yarayan /proc'ta hem okunabilir ve hem de yazılabilir dosyalar da vardır.
Bu tür dosyaların içeriğini değiştirmek, çekirdeğin o andaki durumunu
etkileyeceği için, dikkatli olunmasında yarar vardır. /proc/sys içeriği
değiştirilebilinir tüm dosyaları içermektedir.
/proc/sys/kernel - Çekirdeğin genel çalışmasını etkileyen
bilgileri içermektedir.
/proc/sys/kernel/{domainname, hostname} alan adı ve bilgisayar adını
tutmaktadır. Bu dosyaları ilgili bilgileri değiştirmek için
kullanabilirsiniz.
$ hostname machinename.domainname.com $ cat /proc/sys/kernel/domainname domainname.com $ cat /proc/sys/kernel/hostname machinename $ echo "new-machinename" > /proc/sys/kernel/hostname $ hostname new-machinename.domainname.com
$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
$ ping machinename.domainname.com no answer from machinename.domainname.com
$ echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/proc dosya sistemi Linux'un iç yapısına yönelik dosya tabanli bir arayüz
oluşturmaktadır. Sistemdeki aygıt ve süreçlerin belirlenmesi ve
denetiminde yardımcı görev yapmaktadır. Dolayısıyla, bu dosya sistemini
anlamak ve tecrübe sahibi olmak Linux'tan en fazla yarar sağlamanın
anahtarıdır.
|
Görselyöre sayfalarının bakımı, LinuxFocus Editörleri tarafından yapılmaktadır
© Sandeep Grover, FDL LinuxFocus.org |
Çeviri bilgisi:
|
2004-03-27, generated by lfparser version 2.45