Proc dosya sistemini anlamak

ArticleCategory: [Choose a category, translators: do not translate this, see list below for available categories]

KernelCorner

AuthorImage:[Here we need a little image from you]

[Sandeep Grover]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Sandeep Grover

en to tr Erdal Mutlu

AboutTheAuthor:[A small biography about the author]

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!

Abstract:[Here you write a little summary]

/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.

ArticleIllustration:[One image that will end up at the top of the article]

[proc dosya sistemi]

ArticleBody:[The main part of the article]

/proc - Sanal bir dosya sistemi

/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.

proc dosya sisteminin ba�lanmas�

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 dosyalar�n g�r�nt�lenmesi

/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

Bu sonu�, iki i�lemcili bir sistemde elde edilmi�tir. Yukar�daki alanlar�n �o�u kendi kendini a��klamakta ve sistemdeki donan�m hakk�nda bilgiler sa�lamaktad�r. /proc'ta yer alan baz� bilgiler kodlanm�� olarak yer almakta ve bunlar� bizlerin anlayabilece�i bir �ekile sokmak i�in �e�itli ara�lar yaz�lm��t�r. Bu ara�lardan baz�lar� 'top', 'ps', 'apm' vs. dir.

Yararl� sistem ve �ekirdek bilgilerine ula�mak


Proc dosya sistemi, sistem ve �ekirdek hakk�nda yararl� bilgilere ula�mak i�in kullan�labilir. Baz� �nemli dosyalar a�a��da listelenmi�tir:

Yukar�da listelenenden �ok daha fazla say�da dosya /proc'ta yeralmaktad�r. �lgili bir kullan�c�, /proc dizininde yeralan t�m dosyalar� 'more' komutuyla g�r�nt�lemeli ve burada bulunan dosyalar hakk�ndaki daha fazla bilgiyi referanslarda verilen ilk ba�lant�dan okumal�d�r. kcore gibi baz� dosyalar �ok b�y�k olabileceklerinden ve /proc'taki dosyalar hakk�nda bilgi sahibi olmadan �nce, dosyalar� g�r�nt�lerken 'cat' yerine 'more' komutunu kullanman�z� �neririm.

�al��an programlar hakk�nda bilgiler

/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

Yukar�daki komuta g�re mozilla 32558 PID'sine sahip oldu�unu g�stermektedir. Buna kar��l�k /proc'ta 32558 adl� bir dizin olmas� gerekir.

$ 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

"cmdline" dosyas�nda, program�n �al��t�rma komutu yeralmaktad�r. "environ" dosyas�nda program�n ortam de�i�kenleri yeralmaktad�r. "status" dosyas�nda, kullan�c� numaras� (UID), grup numaras� (GID), program� �al��t�rm�� olan ana program�n program numaras� (PPID) ve program�n o anda "uyumakta" veya "�al��makta" olup olmad���n� belirten bilgi gibi, program hakk�nda durum bilgileri yeralmaktad�r. Her programa ait dizinde birka� adet sembolik ba�lant� vard�r. "cwd", program�n �al��makta oldu�u dizine, "exe", program�n kendisine, "root", program�n kendi k�k dizini olarak g�rd��� dizine, ki genellikle bu "/" dizinidir, "fd", program�n kullanmakta oldu�u dosya tan�mlay�c�lar�na ba�lanm��t�r. "cpu" ise, sadece Linux'un SMP, yani birden fazla i�lemciyi destekleyen �ekirdeklerde var olup, program�n i�lemci kullan�m bilgilerini i�ermektedir.

/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.

/proc �ekirdekle sayesinde etkile�imde bulunmak


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


/proc/sys/kernel/ dizini i�erisinde yap�land�r�labilecek bir�ok dosya bulunmaktad�r. Burada hepsini listelemek pek ak�ll�ca olmaz. En iyisi kullan�c�n�n dosyalara bak�p ayr�nt�lar� kendisinin ��renmesi olacakt�r.
Yap�land�rma yap�labilecek bir dizin de /proc/sys/net dir. Buradaki dosyalar�, sisteminizin bilgisayar a�lar�ndaki �zelliklerini de�i�tirmek i�in kullanabilirsiniz. S�zgelimi, yapaca��n�z basit bir de�i�iklik ile, bilgisayar�n�z� a�'da gizleyebilirsiniz:

$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

Bu komut sayesinde, icmp_echos paketlerinine bilgisayar�n�z cevap vermeyece�i i�in, a�'da yeralan di�er bilgisayarlardan gelen ping sorgular� cevaps�z kalacakt�r.

$ ping machinename.domainname.com
no answer from machinename.domainname.com

Eski haline getirmek i�in:
$ echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

�ekirde�in �zelliklerini de�i�tiren ve /proc/sys dizininde bulunan bir�ok dizin bulunmaktad�r. Ayr�nt�l� bilgi i�in [1] ve [2] nolu referanslara bak�n�z.

Sonu�

/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.

Referanslar