original in en Sandeep Grover
en to tr Erdal Mutlu
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!
/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.