/proc: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
 
(69 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Autor==
Richard Rõngelep A21, 07.12.2016
==Kirjeldus==
==Kirjeldus==
'''/proc''' (process information pseudo-file system) on virtuaalne failisüsteem, milles asuvad failid sisaldavad tuuma hetkeoleku kohta informatsiooni.  
'''/proc''' (process information pseudo-file system) on virtuaalne failisüsteem, milles asuvad virtuaalsed failid hoiavad endas informatsiooni Linuxi süsteemi kohta - kaasaarvatud tuuma, protsesside ja seadistusparameetrite kohta. <ref>http://man7.org/linux/man-pages/man5/proc.5.html</ref>
 
/proc/ kataloogis asuvad virtuaalsed failid ning kataloogid on suurusega 0 baiti, kuid faili avades võib seal olla suurel hulgal informatsiooni - operatsioonisüsteem kuvab kõik detailid faildesse jooksvalt. Lisaks vastab enamike failide aja- ning kuupäevasätteid hetke ajale ning kuupäevale, mis viitab asjaolule, et faile uuendatakse pidevalt. Enamus kataloogis asuvatest failidest on ainult loetavad, kuid teatud failide kaudu on võimalik muuta ka süsteemiga seotud parameetreid.<ref>http://www.thegeekstuff.com/2010/11/linux-proc-file-system/ </ref>


/proc/ kataloogis asuvad virtuaalsed failid. Enamus nendest failidest on suurusega 0 baiti, kuid faili avades võib seal olla suurel hulgl informatsiooni. Lisaks sellele enamus failide aja- ning kuupäeva sätteid vastab hetke ajale ning kuupäevale, mis viitab sellele, et faile uuendatakse pidevalt. Lisaks failidele asuvad '''/proc/'''-is ka nummerdatud kataloogid. Iga nummerdatud kataloog esindab mingit '''protsessi''' (PID).
Lisaks failidele asuvad /proc/-is ka nummerdatud kataloogid. Iga nummerdatud kataloog esindab mingit '''protsessi''' ning kataloogi number vastab protsessi ID-le (PID).<ref name="refname2">http://www.tecmint.com/exploring-proc-file-system-in-linux/</ref>


Selleks, et vaadata '''/proc/''' kataloogi sisse, tuleks sisestada terminali järgmine käsklus
Selleks, et /proc/ kataloog oleks täies mahus nähtav, peaks kasutaja sooritama kõik tegevused '''juurkasutaja''' õigustes, kuid ka tavakasutajale on väga palju informatsiooni saadaval.
ll /proc/


Osa väljundist:
Vaadates /proc/ kataloogi käsklusega '''ll /proc/''', saame järgmise väljundi (välja toodud osa nummerdatud kataloogidest ning failidest):
  ...
  ...
  dr-xr-xr-x  9 root            root                          0 dets  3 22:55 11350/
  dr-xr-xr-x  9 root            root                          0 dets  3 22:55 11350/
Line 22: Line 27:
  -r--r--r--  1 root            root                          0 dets  3 22:58 crypto
  -r--r--r--  1 root            root                          0 dets  3 22:58 crypto
  -r--r--r--  1 root            root                          0 dets  3 22:58 devices
  -r--r--r--  1 root            root                          0 dets  3 22:58 devices
...
dr-xr-xr-x  1 root            root                          0 dets  7 22:58 sys/
  ...
  ...


==Failid==
==Failid==
Virtuaalsed failid, nagu näiteks '''/proc/interrupts''', '''/proc/meminfo''', '''/proc/mount''', '''/proc/partitions''' tagavad süsteemi riistvara kohta hetkelist informatsiooni. Teisalt, aga näiteks '''/proc/filesystems''' ning '''/proc/sys''' tagavad informatsiooni süsteemi konfiguratsiooni ning liideste kohta.
Virtuaalsed failid, nagu näiteks /proc/'''interrupts''', /proc/'''meminfo''', /proc/'''mount''', /proc/'''partitions''' annavad informatsiooni süsteemi riistvara kohta, /proc/'''filesystems''' annab informatsiooni süsteemis toetatud failisüsteemide kohta ning kataloogis /proc/'''sys''' olevate failide kaudu saab muuta süsteemiga seotud parameetreid.  <ref name="refname1">https://www.linux.com/news/discover-possibilities-proc-directory</ref>


/proc/ kataloogis olevaid faile saab vaadata näiteks käskluste '''cat''', '''more''' või '''less''' abil.  
/proc/ kataloogis olevaid faile saab vaadata näiteks käskluste '''cat''', '''more''' või '''less''' abil.  
Kui kasutaja soovib näiteks vaadata informatsiooni oma kesktöötlusseadme (CPU) kohta, tuleks tal sisestada terminalis käsklus '''cat /proc/cpuinfo'''
 
Kui kasutaja soovib näiteks saada informatsiooni süsteemi mälu kohta, tuleks tal sisestada terminalis käsklus '''cat /proc/meminfo'''


Väljund käsklusele võib olla midagi sarnast:
Väljund käsklusele võib olla midagi sarnast:


  processor      : 0
  MemTotal:        8052476 kB
vendor_id      : GenuineIntel
  MemFree:        3556264 kB
cpu family      : 6
  MemAvailable:   5647832 kB
model          : 69
  Buffers:         176760 kB
model name      : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
  Cached:         2419456 kB
stepping       : 1
  SwapCached:           0 kB
  microcode      : 0x17
  Active:         2562260 kB
cpu MHz         : 1826.792
  Inactive:       1565064 kB
  cache size      : 3072 KB
  Active(anon):   1535400 kB
  physical id    : 0
  Inactive(anon)401128 kB
  siblings        : 4
  Active(file):   1026860 kB
  core id        : 0
  Inactive(file)1163936 kB
  cpu cores      : 2
  Unevictable:         32 kB
  apicid          : 0
  Mlocked:             32 kB
  initial apicid  : 0
  SwapTotal:       8266748 kB
  fpu            : yes
  SwapFree:       8266748 kB
fpu_exception   : yes
  cpuid level    : 13
  wp              : yes
  flags          : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology
  nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb tpr_shadow vnmi flexpriority
ept  vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts
bugs            :
  bogomips        : 4589.13
clflush size    : 64
  cache_alignment : 64
  address sizes  : 39 bits physical, 48 bits virtual
power management:
  ...
  ...


Antud väljundist saab üsna põhjaliku ülevaate süsteemi mälu kohta. Lisaks kasutavad antud informatsiooni näiteks käsklused '''top''' ja '''free'''. Näiteid võib tuua veelgi - käsklus '''uname''' koos oma erinevate parameetritega võtab informatsiooni /proc/'''version'''-ist, käsklus '''lsmod''' on sisuliselt sama, mis käskluse '''cat /proc/modules''' väljund ning käsklus '''uptime''' võtab ajaparameetrid /proc/'''uptime'''-st. <ref name="refname1">https://www.linux.com/news/discover-possibilities-proc-directory</ref> <ref>https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/ch-proc.html</ref>


Nagu näha, sisaldab '''/proc/cpuinfo''' üsna palju informatsiooni kesktöötlusseadme kohta.
==Protsessid==
==Protsessid==
Nagu eelpool mainitud, vastab iga '''/proc/''' kataloogis olev nummerdatud alamkataloog erinevale '''protsessile'''.
Nagu eelpool mainitud, vastab iga /proc/ kataloogis olev nummerdatud alamkataloog erinevale jooksvale '''protsessile''', kui protsess lõpetab töö, kaob antud protsessi ID-ga kataloog ka /proc/-ist. <ref name="refname2">http://www.tecmint.com/exploring-proc-file-system-in-linux/ </ref>
 
Näiteks võtame protsessi numbriga 1 ja vaatame antud kataloogi. Käivitame terminalis käskluse:


ls /proc/3939
Näiteks võtame protsessi numbriga 18083 ja vaatame antud kataloogi sise käsklusega '''ls'''.


Saame väljundi:
Saame väljundi:
Line 80: Line 74:
  cmdline    exe              loginuid  mountstats  oom_score_adj  schedstat    statm      wchan
  cmdline    exe              loginuid  mountstats  oom_score_adj  schedstat    statm      wchan


Selleks, et protsessi kohta rohkem informatsiooni saada, tuleks vaadata protsessi alamkataloogis olevat faili nimega '''status'''
Igal nummerdatud alamkataloogil on sarnane failistruktuur. Nendest mõned:
 
'''cmdline''' - Sisaldab käsklust koos parameetritega, millega protsesss käivitati.


Käivitame terminalis järgmise käskluse:
'''cwd''' - Symlink kataloogi, kus protsess töötab.


cat /proc/1/status/
'''exe''' - Symlink protsessi täitmisprogrammini.


Saame järgmise väljundi:
'''stat''' ja '''status''' - Sisaldavad informatsiooni protsessi oleku kohta.
'''maps''', '''statm''' ja '''mem''' - Sisaldavad informatsiooni mälu kohta, mida protsess kasutab <ref name="refname1">https://www.linux.com/news/discover-possibilities-proc-directory</ref>


  amesystemd
Kui soovime saada eelmainitud protsessi kohta lisainformatsiooni sisestame terminali käskluse '''cat /proc/18083/status''' .
 
Osa käskluse väljundist:
 
  Nametop
  State:  S (sleeping)
  State:  S (sleeping)
  Tgid:  1
  Tgid:  18083
  Ngid:  0
  Ngid:  0
  Pid:    1
  Pid:    18083
  PPid:  0
  PPid:  32179
  TracerPid:      0
  TracerPid:      0
  Uid:    0      0      0      0
  Uid:    1000    1000    1000    1000
  Gid:    0      0      0      0
  Gid:    1000    1000    1000    1000
  FDSize: 128
  FDSize: 256
  Groups:
  Groups: 4 24 27 30 46 113 128 1000
  NStgid: 1
  ...
  NSpid: 1
 
  NSpgid: 1
Väljundist võib välja lugeda, et protsessi nimi on '''top''', hetkeolek on '''sleeping''', protsessi ID on '''18083''' (nagu eelnevalt mainitud) ning kuna UID (kasutaja ID) ja GID (grupi ID) on mõlemad '''1000''', siis kuulub antud protsess tavakasutajale.
  NSsid: 1
 
  VmPeak:  250848 kB
==/proc/sys==
  VmSize:  185452 kB
 
VmLck:        0 kB
'''/proc/sys/''' erineb teistest kataloogidest, kuna seal asuvates alamkataloogide failide kaudu on võimalik muuta jooksvalt tuuma parameetreid ning omadusi.<ref name="refname3">https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/s1-proc-directories.html#S2-PROC-DIR-SYS</ref>
VmPin:         0 kB
 
VmHWM:      6256 kB
Kui vaadata /proc/sys/ kausta, on näha, et seal asuvad mõned alamkataloogid. Kasutades käsklust '''ls /proc/sys''' saan järgmise väljundi:
VmRSS:      6136 kB
 
VmData:  149204 kB
  abi debug dev fs kernel net vm
VmStk:      136 kB
 
VmExe:      1392 kB
Alamkataloogid lahti seletatult:
VmLib:      3664 kB
 
VmPTE:      104 kB
'''debug''' - Annab informatsiooni süsteemi silumise kohta. Kasulik tuuma arendajatele.
VmPMD:        16 kB
 
VmSwap:        0 kB
'''dev''' - Sisaldab parameetreid süsteemi seadmete kohta (näiteks CD-ROM, RAID).
HugetlbPages:          0 kB
 
Threads:        1
'''fs''' - Failisüsteemiga seotud parameetreid.
SigQ:   0/31033
 
SigPnd: 0000000000000000
'''kernel''' - Võimaldab muuta tuuma konfiguratsiooni.
  ShdPnd: 0000000000000000
 
  SigBlk: 7be3c0fe28014a03
'''net''' - Võimaldab muuta võrguparameetreid.
  SigIgn: 0000000000001000
 
  SigCgt: 00000001800004ec
'''vm''' - Hõlbustab virtuaalmälu konfigureerimist. <ref name="refname3">https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/s1-proc-directories.html#S2-PROC-DIR-SYS</ref>
  CapInh: 0000000000000000
 
  CapPrm: 0000003fffffffff
Selleks, et näha milliste failide kaudu on võimalik muuta näiteks virtuaalmälu parameetreid, tuleks vaadata millistel failidel on kirjutamisõigus. Vaatleme käskluse '''ll /proc/sys/vm/''' abil kataloogi /vm/:
  CapEff: 0000003fffffffff
   
  CapBnd: 0000003fffffffff
  ...
  CapAmb: 0000000000000000
  -r'''-'''-r--r-- 1 root root 0 dets  7 19:14 nr_pdflush_threads
  Seccomp:        0
  -r'''w'''-r--r-- 1 root root 0 dets  7 19:14 numa_zonelist_order
Cpus_allowed:  ff
  ...
Cpus_allowed_list:     0-7
  -r'''w'''-r--r-- 1 root root 0 dets  7 19:14 panic_on_oom
Mems_allowed:  00000000,00000001
  -r'''w'''-r--r-- 1 root root 0 dets  7 19:14 percpu_pagelist_fraction
Mems_allowed_list:      0
  -r'''w'''-r--r-- 1 root root 0 dets  7 19:14 stat_interval
voluntary_ctxt_switches:        1975
  -r'''w'''-r--r-- 1 root root 0 dets  7 19:07 swappiness
nonvoluntary_ctxt_switches:    473
  ...
 
Nagu näha enamikke kataloogis olevaid faile on võimalik muuta. Näiteks on võimalik muuta '''swappiness''' parameetrit, mis mõjutab saaleala kasutamist. Kuigi parameetreid on võimalik muuta, ei ole nad jäävad ning selleks, et muutus oleks püsiv tuleks kasutada '''sysctl'''-i ning muuta /etc/'''sysctl.conf''' faili. <ref name="refname3">https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Reference_Guide/s1-proc-directories.html#S2-PROC-DIR-SYS</ref>
 
==Kokkuvõtteks==
 
/proc kataloog annab kasutajale väga palju informatsiooni Linuxi süsteemi kohta ning võimaldab seadistada teatud tuuma parameetreid. Kuna paljud käsklused kasutavad informatsiooni, mis pärineb /proc kataloogist saab lisaks ülevaate ka mõningate käskluste hingeelust.


==Allikad==
{{Reflist}}


Saame teada, et protsess kuulub '''systemd''-le. Protsessi hetkeolek on '''sleeping''' ning protsessi ID (PID) on '''1'''. Lisaks saame me näha, kes protsessi jooksutab ning kuna mõlemad '''UID''' ning '''GID''' on '''0''', siis suulub antud protsess '''juurkasutajale''' (root).
==123==
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]

Latest revision as of 23:20, 23 December 2016

Autor

Richard Rõngelep A21, 07.12.2016

Kirjeldus

/proc (process information pseudo-file system) on virtuaalne failisüsteem, milles asuvad virtuaalsed failid hoiavad endas informatsiooni Linuxi süsteemi kohta - kaasaarvatud tuuma, protsesside ja seadistusparameetrite kohta. [1]

/proc/ kataloogis asuvad virtuaalsed failid ning kataloogid on suurusega 0 baiti, kuid faili avades võib seal olla suurel hulgal informatsiooni - operatsioonisüsteem kuvab kõik detailid faildesse jooksvalt. Lisaks vastab enamike failide aja- ning kuupäevasätteid hetke ajale ning kuupäevale, mis viitab asjaolule, et faile uuendatakse pidevalt. Enamus kataloogis asuvatest failidest on ainult loetavad, kuid teatud failide kaudu on võimalik muuta ka süsteemiga seotud parameetreid.[2]

Lisaks failidele asuvad /proc/-is ka nummerdatud kataloogid. Iga nummerdatud kataloog esindab mingit protsessi ning kataloogi number vastab protsessi ID-le (PID).[3]

Selleks, et /proc/ kataloog oleks täies mahus nähtav, peaks kasutaja sooritama kõik tegevused juurkasutaja õigustes, kuid ka tavakasutajale on väga palju informatsiooni saadaval.

Vaadates /proc/ kataloogi käsklusega ll /proc/, saame järgmise väljundi (välja toodud osa nummerdatud kataloogidest ning failidest):

...
dr-xr-xr-x   9 root             root                           0 dets   3 22:55 11350/
dr-xr-xr-x   9 root             root                           0 dets   3 22:55 11588/
dr-xr-xr-x   9 root             root                           0 dets   4  2016 1177/
dr-xr-xr-x   9 root             root                           0 dets   4  2016 1183/
dr-xr-xr-x   9 root             root                           0 dets   4  2016 1187/
dr-xr-xr-x   9 root             root                           0 dets   3 22:55 11870/
dr-xr-xr-x   9 root             root                           0 dets   3 22:55 11894/
dr-xr-xr-x   9 root             root                           0 dets   4  2016 12/
dr-xr-xr-x   9 kasutaja         kasutaja                       0 dets   4  2016 1223/
...
-r--r--r--   1 root             root                           0 dets   3 22:58 cpuinfo
-r--r--r--   1 root             root                           0 dets   3 22:58 crypto
-r--r--r--   1 root             root                           0 dets   3 22:58 devices
...
dr-xr-xr-x   1 root             root                           0 dets   7 22:58 sys/
...

Failid

Virtuaalsed failid, nagu näiteks /proc/interrupts, /proc/meminfo, /proc/mount, /proc/partitions annavad informatsiooni süsteemi riistvara kohta, /proc/filesystems annab informatsiooni süsteemis toetatud failisüsteemide kohta ning kataloogis /proc/sys olevate failide kaudu saab muuta süsteemiga seotud parameetreid. [4]

/proc/ kataloogis olevaid faile saab vaadata näiteks käskluste cat, more või less abil.

Kui kasutaja soovib näiteks saada informatsiooni süsteemi mälu kohta, tuleks tal sisestada terminalis käsklus cat /proc/meminfo

Väljund käsklusele võib olla midagi sarnast:

MemTotal:        8052476 kB
MemFree:         3556264 kB
MemAvailable:    5647832 kB
Buffers:          176760 kB
Cached:          2419456 kB
SwapCached:            0 kB
Active:          2562260 kB
Inactive:        1565064 kB
Active(anon):    1535400 kB
Inactive(anon):   401128 kB
Active(file):    1026860 kB
Inactive(file):  1163936 kB
Unevictable:          32 kB
Mlocked:              32 kB
SwapTotal:       8266748 kB
SwapFree:        8266748 kB
...

Antud väljundist saab üsna põhjaliku ülevaate süsteemi mälu kohta. Lisaks kasutavad antud informatsiooni näiteks käsklused top ja free. Näiteid võib tuua veelgi - käsklus uname koos oma erinevate parameetritega võtab informatsiooni /proc/version-ist, käsklus lsmod on sisuliselt sama, mis käskluse cat /proc/modules väljund ning käsklus uptime võtab ajaparameetrid /proc/uptime-st. [4] [5]

Protsessid

Nagu eelpool mainitud, vastab iga /proc/ kataloogis olev nummerdatud alamkataloog erinevale jooksvale protsessile, kui protsess lõpetab töö, kaob antud protsessi ID-ga kataloog ka /proc/-ist. [3]

Näiteks võtame protsessi numbriga 18083 ja vaatame antud kataloogi sise käsklusega ls.

Saame väljundi:

attr        comm             fd        map_files   net            pagemap      sessionid  status
autogroup   coredump_filter  fdinfo    maps        ns             personality  setgroups  syscall
auxv        cpuset           gid_map   mem         numa_maps      projid_map   smaps      task
cgroup      cwd              io        mountinfo   oom_adj        root         stack      timers
clear_refs  environ          limits    mounts      oom_score      sched        stat       uid_map
cmdline     exe              loginuid  mountstats  oom_score_adj  schedstat    statm      wchan

Igal nummerdatud alamkataloogil on sarnane failistruktuur. Nendest mõned:

cmdline - Sisaldab käsklust koos parameetritega, millega protsesss käivitati.

cwd - Symlink kataloogi, kus protsess töötab.

exe - Symlink protsessi täitmisprogrammini.

stat ja status - Sisaldavad informatsiooni protsessi oleku kohta.

maps, statm ja mem - Sisaldavad informatsiooni mälu kohta, mida protsess kasutab [4]

Kui soovime saada eelmainitud protsessi kohta lisainformatsiooni sisestame terminali käskluse cat /proc/18083/status .

Osa käskluse väljundist:

Name:   top
State:  S (sleeping)
Tgid:   18083
Ngid:   0
Pid:    18083
PPid:   32179
TracerPid:      0
Uid:    1000    1000    1000    1000
Gid:    1000    1000    1000    1000
FDSize: 256
Groups: 4 24 27 30 46 113 128 1000 
...

Väljundist võib välja lugeda, et protsessi nimi on top, hetkeolek on sleeping, protsessi ID on 18083 (nagu eelnevalt mainitud) ning kuna UID (kasutaja ID) ja GID (grupi ID) on mõlemad 1000, siis kuulub antud protsess tavakasutajale.

/proc/sys

/proc/sys/ erineb teistest kataloogidest, kuna seal asuvates alamkataloogide failide kaudu on võimalik muuta jooksvalt tuuma parameetreid ning omadusi.[6]

Kui vaadata /proc/sys/ kausta, on näha, et seal asuvad mõned alamkataloogid. Kasutades käsklust ls /proc/sys saan järgmise väljundi:

abi  debug  dev  fs  kernel  net  vm

Alamkataloogid lahti seletatult:

debug - Annab informatsiooni süsteemi silumise kohta. Kasulik tuuma arendajatele.

dev - Sisaldab parameetreid süsteemi seadmete kohta (näiteks CD-ROM, RAID).

fs - Failisüsteemiga seotud parameetreid.

kernel - Võimaldab muuta tuuma konfiguratsiooni.

net - Võimaldab muuta võrguparameetreid.

vm - Hõlbustab virtuaalmälu konfigureerimist. [6]

Selleks, et näha milliste failide kaudu on võimalik muuta näiteks virtuaalmälu parameetreid, tuleks vaadata millistel failidel on kirjutamisõigus. Vaatleme käskluse ll /proc/sys/vm/ abil kataloogi /vm/:

...
-r--r--r-- 1 root root 0 dets   7 19:14 nr_pdflush_threads
-rw-r--r-- 1 root root 0 dets   7 19:14 numa_zonelist_order
...
-rw-r--r-- 1 root root 0 dets   7 19:14 panic_on_oom
-rw-r--r-- 1 root root 0 dets   7 19:14 percpu_pagelist_fraction
-rw-r--r-- 1 root root 0 dets   7 19:14 stat_interval
-rw-r--r-- 1 root root 0 dets   7 19:07 swappiness
...

Nagu näha enamikke kataloogis olevaid faile on võimalik muuta. Näiteks on võimalik muuta swappiness parameetrit, mis mõjutab saaleala kasutamist. Kuigi parameetreid on võimalik muuta, ei ole nad jäävad ning selleks, et muutus oleks püsiv tuleks kasutada sysctl-i ning muuta /etc/sysctl.conf faili. [6]

Kokkuvõtteks

/proc kataloog annab kasutajale väga palju informatsiooni Linuxi süsteemi kohta ning võimaldab seadistada teatud tuuma parameetreid. Kuna paljud käsklused kasutavad informatsiooni, mis pärineb /proc kataloogist saab lisaks ülevaate ka mõningate käskluste hingeelust.

Allikad