[LinuxFocus-icon]
<--  | Strona G��wna  | Mapa Serwisu  | Indeks  | Szukaj

Nowo�ci | Archiwum | Linki | O Nas
Ten dokument jest dost�pny w nast�puj�cych j�zykach: English  Castellano  ChineseGB  Deutsch  Francais  Nederlands  Russian  Turkce  Polish  

[Sandeep Grover]
Sandeep Grover
<sandeep<at>Magma-DA.com>

O Autorze:

Sandeep Grover pracuje dla Magma Design Automation, Indie -- najszybciej rozwijaj�cej si� firmie w dziedzinie EDA (Electronic Design Automation). W swoim wolnym czasie odkrywa szczeg�y Linuksa i ma nadziej� jednego dnia wnie�� sw�j wk�ad w j�dro Linuksa!



T�umaczenie na j�zyk polski: :
Mateusz Mrozewski (homepage)

Zawarto��:

 

Zrozumie� system plik�w /proc

[the proc filesystem]

Notka:

J�dro Linuksa dostarcza mechanizm pozwalaj�cy na dost�p do swoich wewn�trznych struktur danych, a tak�e na zmian� ustawie� j�dra podczas jego pracy, po poprzez system plik�w /proc. Om�wimy tutaj system plik�w /proc dla architektury Intel x86, jednak podstawowe poj�cia pozostan� takie same dla Linuksa na ka�dej platformie.


_________________ _________________ _________________

 

/proc - wirtualny system plik�w

System plik�w /proc jest mechanizmem wykorzystywanym przez j�dro i jego modu�y do przesy�ania informacji do proces�w (st�d nazwa /proc). Ten pseudo system plik�w pozwala na wsp�prac� z wewn�trznymi strukturami danych j�dra, uzyskanie u�ytecznych informacji na temat proces�w oraz na zmian� ustawie� (poprzez modyfikacj� parametr�w j�dra) podczas pracy systemu. /proc jest przechowywany w pami�ci, w przeciwie�stwie do innych system�w plik�w, kt�re s� przechowywane na dysku. Je�li otworzysz plik /proc/mounts (kt�ry wypisuje wszystkie zamontowane systemy plik�w, tak jak komenda "mount"), powiniene� zobaczy� nast�puj�c� lini�:


grep proc /proc/mounts
/proc /proc proc rw 0 0

/proc jest kontrolowany przez j�dro i nie ma zasadniczo �adnych urz�dze�. Poniewa� zawiera on g��wnie kontrolowane przez j�dro informacje o stanie systemu, najbardziej logicznym miejscem na ich przechowywanie jest pami�� kontrolowana przez j�dro. Wykonanie operacji 'ls -l' na katalogu /proc ukazuje, �e wi�kszo�� plik�w ma rozmiar 0 bajt�w; jednak gdy przegl�damy dany plik, mo�emy zobaczy� ca�kiem du�o informacji. Jak to jest mo�liwe? Dzieje si� tak, poniewa� system plik�w /proc rejestruje si� w warstwie wirtualnego systemu plik�w (VFS - Virtual File System). Gdy VFS wykonuje odwo�anie do i-w�z��w jego plik�w/katalog�w, system plik�w /proc tworzy te pliki/katalogi na podstawie informacji z j�dra.

 

Montowanie systemu plik�w /proc

Je�li system plik�w /proc nie jest zamontowany w twoim systemie, mo�esz tego dokona� nast�puj�cym poleceniem.

mount -t proc proc /proc

Powy�sza komenda powinna zamontowa� tw�j system plik�w proc. Prosz� przeczyta� stron� podr�cznika polecenia mount w celu uzyskania szczeg��w.

 

Przegl�damy pliki /proc

Pliki /proc mog� by� u�yte do uzyskania informacji o stanie j�dra, atrybutach komputera, stanie uruchomionych proces�w, itp. Wi�kszo�� plik�w w katalogu /proc dostarcza naj�wie�szy "rzut okiem" na fizyczne �rodowisko systemu. Pomimo, �e pliki /proc s� wirtualne, mog� by� przegl�dane przy pomocy dowolnego edytora plik�w, jak 'more', 'less' czy 'cat'. Kiedy dowolny edytor pr�buje otworzy� wirtualny plik, plik ten jest tworzony na bie��co z informacji z j�dra. Przedstawi� teraz interesuj�ce wyniki jakie uzyska�em w moim systemie

$ 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

To jest wynik dla dwuprocesorowej maszyny. Wi�kszo�� z powy�szych informacji nie potrzebuje wyja�nienia i dostarcza u�ytecznych informacji o sprz�cie, na kt�rym uruchomiony jest system. Cz�� z informacji w plikach /proc jest zakodowana, lecz istnieje du�o narz�dzi, kt�re interpretuj� zakodowane informacje i wy�wietlaj� je w czytelnej formie. Niekt�re z tych narz�dzi to: 'top', 'ps', 'apm' itp.

 

Zdobywanie u�ytecznych informacji o j�drze i systemie


System plik�w /proc mo�e by� u�yty do zebrania u�ytecznych informacji o systemie i dzia�aj�cym j�drze. Niekt�re z wa�nych plik�w zosta�y wypisane poni�ej.

W katalogu /proc jest znacznie wi�cej plik�w ni� wypisane powy�ej. Zainteresowany czytelnik powinien przejrze� ka�dy plik z katalogu /proc wykorzystuj�c 'more' lub przeczyta� [1], w celu uzyskania informacji o plikach znajduj�cych si� w /proc. Sugeruj� u�ycie 'more', a nie 'cat', zanim poznasz troch� system plik�w, poniewa� niekt�re pliki (np. kcore) mog� by� bardzo du�e.

 

Informacje o uruchomionych procesach

System plik�w /proc mo�e by� wykorzystany do uzyskania informacji o ka�dym dzia�aj�cym procesie. W katalogu /proc jest kilka numerowych podkatalog�w. Ka�dy numerowany katalog jest zwi�zany z id procesu (PID). W zwi�zku z tym dla ka�dego uruchomionego procesu, w katalogu /proc znajduje si� podkatalog nazwany tak, jak jego PID. Wewn�trz tych podkatalog�w znajduj� si� pliki dostarczaj�ce wa�nych szczeg��w o stanie i �rodowisku procesu. Spr�bujmy znale�� uruchomiony proces.

$ ps -aef | grep mozilla
root 32558 32425 8  22:53 pts/1  00:01:23  /usr/bin/mozilla
Powy�sza komenda pokazuje, �e jest uruchomiony proces mozilla z PID 32558. W zwi�zku z tym z katalogu /proc powinien by� podkatalog 32558.

$ 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
Plik "cmdline" zawiera komend� u�yt� do uruchomienia procesu. Plik "environ" zawiera zmienne �rodowiskowe dla procesu. "status" zawiera informacje o statusie procesu, zawieraj�ce numer identyfikacyjny u�ytkownika (UID) oraz grupy (GID) dla u�ytkownika, kt�ry uruchomi� proces, ID procesu-rodzica (PPID), oraz aktualny stan procesu, taki jak "Sleeping" (u�piony) czy "Running" (dzia�aj�cy). Ka�dy katalog procesu ma tak�e kilka ��czy symbolicznych. "cwd" jest ��czem roboczego katalogu procesu, "exe" jest ��czem do wykonywalnego programu uruchomionego procesu, "root" jest ��czem do katalogu, kt�ry proces "widzi" jako sw�j katalog g��wny (zazwyczaj "/"). Katalog "fd" zawiera ��cza do deskryptor�w plik�w, z kt�rych korzysta proces. "cpu" istnieje tylko na j�drach Linuxa SMP. Zawiera on rodzielenie czasu procesu przez procesor.

/proc/self jest interesuj�cym podkatalogiem, kt�ry u�atwia programowi u�ycie /proc do odszukania informacji o swoim procesie. Wpis /proc/self jest ��czem symbolicznym do podkatalogu /proc odnosz�cego si� do procesu odczytuj�cego katalog /proc.

 

Wsp�praca z j�drem poprzez /proc


Wi�kszo�� plik�w w katalogu /proc opisanych powy�ej jest tylko do odczytu. Jednak�e system plik�w /proc umo�liwia interakcj� z j�drem poprzez pliki do zapisu i odczytu w katalogu /proc. Zapis do tych plik�w mo�e zmieni� stan j�dra i w zwi�zku z tym zmiany w tych plikach powinny by� robione bardzo ostro�nie. Katalog /proc/sys zawiera wszystkie pliki, kt�re mo�emy zapisywa� i u�y� do zmiany zachowania j�dra.

/proc/sys/kernel - ten katalog zawiera informacje, kt�re odzwierciedlaj� og�lne zachowanie j�dra. /proc/sys/kernel/{domainname, hostname} zawieraj� domen� oraz nazw� hosta maszyny/sieci. Te pliki mog� by� u�yte do zmiany tych ustawie�.

$ 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

W zwi�zku z tym, poprzez modyfikacj� pliku wewn�trz katalogu /proc, mo�emy zmieni� nazw� hosta. W katalogu /proc/sys/kernel/ istnieje o wiele wi�cej plik�w konfiguracyjnych. Wypisanie ich wszystkich tutaj jest niemo�liwe, dlatego czytelnik powinien samodzielnie zajrze� do tego katalogu.
Kolejnym konfiguracyjnym katalogiem jest /proc/sys/net. Pliki w tym katalogu mog� by� u�yte do zmiany ustawie� sieciowych maszyny/sieci. Np. poprzez prost� modyfikacj� pliku mo�esz ukry� sw�j komputer w sieci.

$ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
To ukryje tw�j komputer w sieci poprzez wy��czenie odpowiedzi na icmp_echos. Host nie b�dzie odpowiada� na pingi z innych host�w.

$ ping machinename.domainname.com
no answer from machinename.domainname.com
Aby ustawi� to na domy�lne zachowanie wykonaj
$ echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
Jest du�o wi�cej podkatalog�w wewn�trz /proc/sys, kt�re mo�na konfigurowa� w celu zmiany w�a�ciwo�ci j�dra. Zajrzyj do [1], [2] po szczeg�owe informacje.

 

Wnioski

System plik�w /proc dostarcza interfejs do j�dra oparty na plikach. Pomaga on w okre�laniu stanu i konfiguracji r�nych urz�dze� i proces�w w systemie. Zrozumienie i wykorzystanie wiedzy o nim jest kluczem do najlepszego wykorzystania twojego Linuxa.

 

Bibliografia


 

Dyskusja dotycz�ca tego artyku�u

Komentarze do dyskusji:
 Strona talkback 

<--, back to the index of this issue

Strona prowadzona przez redakcj� LinuxFocus
© Sandeep Grover, FDL
LinuxFocus.org
t�umaczenie:
en --> -- : Sandeep Grover <sandeep<at>Magma-DA.com>
en --> pl: Mateusz Mrozewski (homepage)

2004-01-30, generated by lfparser version 2.45