Pracując z terminalem, czasem potrzebujemy odczytać informacje o sprzęcie z jakiego składa się maszyna na jakiej pracujemy. Na szczęście te informacje w Linuksie udostępnione są w bardzo prosty sposób dzięki procfs (od ang. process file system, system plików procesów). Jest to pseudo-system plików lub po prostu wirtualny system plików. Pozwala ona na komunikację użytkownika z jądrem Linuksa poprzez interfejs VFS.
Ten wirtualny system plików domyślnie jest montowany podczas uruchamiania systemu. Jeśli nie został on zamontowany, możemy wykonać to ręcznie wydając polecenie:
mount -t proc proc /proc
Z punktu widzenia użytkownika mamy dostęp do ciekawych plików w katalogu /proc. Katalogi oraz pliki w /proc nie są powiązane z żadnym nośnikiem danych i występują tylko w pamięci operacyjnej. Zawartość plików oraz katalogów jakie się tam znajdują, jest generowana na bieżąco przez specjalne struktury danych jądra systemu. Reprezentują one stan systemu w danej chwili.
Dane te najczęściej są widoczne w postaci plików tekstowych. Dzięki temu możemy odczytać informacje na temat działających procesów:
[zenfir@dune ~]$ cat /proc/5388/status Name: java State: S (sleeping) SleepAVG: 88% Tgid: 5388 Pid: 5388 PPid: 5379 TracerPid: 0 Uid: 7003 7003 7003 7003 Gid: 7000 7000 7000 7000 FDSize: 256 Groups: 300 7000 VmSize: 1947856 kB VmLck: 0 kB VmRSS: 1365816 kB VmData: 1863560 kB VmStk: 40 kB VmExe: 42 kB VmLib: 1815482 kB StaBrk: 08055000 kB Brk: 0a28f000 kB StaStk: bffff640 kB ExecLim: ffffffff Threads: 500 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000000081001 SigCgt: 1000000180004cce CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000
W innych plikach znajdziemy następujące informacje:
/proc/pid/cmdline- zawiera polecenie jakie zostało wydane do uruchomienia procesu. Znajduje się tu także lista parametrów dodana do polecenia./proc/pid/cwd- jest to dowiązanie symboliczne, które kieruje do katalogu roboczego procesu./proc/pid/environ- zawiera listę zmiennych środowiskowych z jakich korzysta proces./proc/pid/exe- jest to dowiązanie symboliczne do programu, który stworzył ten proces./proc/pid/fd/- w tym katalogu znajdują się dowiązania do plików, które otworzył proces./proc/pid/mem- zawiera pamięć zaalokowaną przez proces./proc/pid/stat- informacje na temat statusu procesu./proc/pid/statm- informacje na temat statusu użycia pamięci przez proces.
Wystarczy odczytać odpowiedni plik z podkatalogu o nazwie reprezentowanej przez numer identyfikacyjny procesu (PID). Do niektórych plików również można zapisywać dane. W ten sposób przekazujemy komendy bezpośrednio do działającego jądra.
Informacje o systemie
Jądro systemu, od momentu startu, prowadzi różnego rodzaju statystyki, które zapisuje do pliku: /proc/stat. Możemy dzięki niemu dowiedzieć się ile aktualnie przetwarzanych jest procesów, oraz jaka ich liczba została stworzona od czasu startu systemu. Przykładowa zawartość pliku:
cpu 2166624532 3768773 269277449 7976513937 467370938 2624892 0 cpu0 736783532 484162 112879704 1825044715 43307026 2253920 0 cpu1 404062846 811281 53602688 2209090371 53156469 29343 0 cpu2 452806084 1394625 51279276 2028816516 187874859 165868 0 cpu3 572972069 1078703 51515781 1913562333 183032583 175759 0 intr 14396813661 1705418717 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2962956409 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1065644447 0 0 0 0 0 0 0 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72857706 0 0 0 0 0 ctxt 333782462608 btime 1203692335 processes 24751955 procs_running 3 procs_blocked 0
Informacje na temat Swapu znajdują się w:
[paszczak000@muszelka ~]$ cat /proc/swaps Filename Type Size Used Priority /dev/sda5 partition 2008084 228 -1 /dev/sda6 partition 2008084 0 -2
Informacje o sprzęcie
Znając już katalog /proc, możemy pokusić się o poszukanie informacji na temat sprzętu jaki znajduje się na maszynie. W prosty i szybki sposób możemy dostać się do informacji na procesora czy pamięci.
Procesor
Odczytując dane z pliku /proc/cpuinfo, możemy dowiedzieć się wielu informacji na temat procesora(ów) zainstalowanych w maszynie.
[paszczak000@muszelka ~]$ cat /proc/cpuinfo processor : 0 vendor_id : AuthenticAMD cpu family : 6 model : 10 model name : AMD Athlon(tm) XP 2600+ stepping : 0 cpu MHz : 2079.845 cache size : 256 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse pni syscall mmxext 3dnowext 3dnow bogomips : 4120.57
Korzystając z poleceń Basha możemy wyciągnąć interesujące nas parametry np:
Prędkość procesora
cat /proc/cpuinfo | grep 'cpu MHz' | sed -e 's/.*: //'
Model
cat /proc/cpuinfo | grep 'model name' | sed -e 's/.*: //'
Pamięć
Odczytując dane z pliku /proc/meminfo, możemy dowiedzieć się wielu informacji na temat pamięci zainstalowanej w maszynie.
[paszczak000@muszelka ~]$ cat /proc/meminfo MemTotal: 515528 kB MemFree: 8564 kB Buffers: 11396 kB Cached: 266144 kB SwapCached: 0 kB Active: 305280 kB Inactive: 164832 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 515528 kB LowFree: 8564 kB SwapTotal: 1124508 kB SwapFree: 1121780 kB Dirty: 476 kB Writeback: 0 kB Mapped: 268384 kB Slab: 23164 kB CommitLimit: 1382272 kB Committed_AS: 480904 kB PageTables: 2956 kB VmallocTotal: 511992 kB VmallocUsed: 29864 kB VmallocChunk: 477684 kB
Jeśli interesują nas dane na temat wolnej pamięci możemy wydać polecenie:
cat /proc/meminfo | grep MemFree
Pamięci masowe
Aby odczytać informacje na temat urządzeń podłączonych do IDE, musimy przejrzeć pliki w podkatalogach katalogu /proc/ide/. Znajdziemy tam katalogi o nazwach hda, hdb, a w nich model, capacity, cache. Aby obejrzeć dane na temat dysku twardego możemy wydać polecenie:
cat /proc/ide/hda/model

Urządzenia typu SCSI oraz SATA mają identyfikatory sda, sdb i tak dalej. Aby obejrzeć listę podłączonych dysków do wykrytych kontrolerów można przejrzeć plik /proc/scsi/scsi. Znajdziemy tam podstawowe informacje na temat modeli dysków.
[paszczak000@muszelka ~]$ cat /proc/scsi/scsi Attached devices: Host: scsi2 Channel: 00 Id: 00 Lun: 00 Vendor: ATA Model: ST360015A Rev: 3.53 Type: Direct-Access ANSI SCSI revision: 05 Host: scsi3 Channel: 00 Id: 00 Lun: 00 Vendor: HL-DT-ST Model: DVDRAM GSA-4163B Rev: A100 Type: CD-ROM ANSI SCSI revision: 05 Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: ATA Model: Maxtor 6Y120M0 Rev: YAR5 Type: Direct-Access ANSI SCSI revision: 05 Host: scsi17 Channel: 00 Id: 00 Lun: 00 Vendor: Seagate Model: FreeAgent Go Rev: 100F Type: Direct-Access ANSI SCSI revision: 02
Informacje na temat partycji znajdziemy w pliku:
[paszczak000@muszelka ~]$ cat /proc/partitions major minor #blocks name 8 0 143374000 sda 8 1 200781 sda1 8 2 1004062 sda2 8 3 10008495 sda3 8 4 1 sda4 8 5 2008093 sda5 8 6 2008093 sda6 8 7 2008093 sda7 8 8 2008093 sda8 8 9 4008186 sda9 8 10 15783831 sda10 8 11 104334111 sda11 8 16 143374000 sdb
Natomiast zamontowane partycje można podejrzeć w /proc/mounts.
Więcej ciekawych informacji można wyciągnąć z manuala proc(5).
Linki
- Exploring procfs
- procfs (wikipedia.org)









Nadmierne używanie cat’a prowadzi do osteoporozy. Zamiast:
cat /proc/cpuinfo | grep 'cpu MHz' | sed -e 's/.*: //'należy użyć:
grep 'cpu MHz' /proc/cpuinfo| sed -e 's/.*: //'Podobnie należy postąpić w każdym innym przypadku.
Jasne ;-) Słuszna uwaga ;-)
hyhyhy
jak w matriksie: Czy widzisz kobiete w czerwieni posrod cyferek ?
Hahahaha ;-)
Dodaj komentarz