Kui Te uurite kataloogi /proc
sisu, näete seal paljusid katalooge, mille nimeks on mingi arv. Need kataloogid sisaldavad infot parajasti Teie süsteemis töötavate protsesside kohta:
$ ls -d /proc/[0-9]* /proc/1/ /proc/302/ /proc/451/ /proc/496/ /proc/556/ /proc/633/ /proc/127/ /proc/317/ /proc/452/ /proc/497/ /proc/557/ /proc/718/ /proc/2/ /proc/339/ /proc/453/ /proc/5/ /proc/558/ /proc/755/ /proc/250/ /proc/385/ /proc/454/ /proc/501/ /proc/559/ /proc/760/ /proc/260/ /proc/4/ /proc/455/ /proc/504/ /proc/565/ /proc/761/ /proc/275/ /proc/402/ /proc/463/ /proc/505/ /proc/569/ /proc/769/ /proc/290/ /proc/433/ /proc/487/ /proc/509/ /proc/594/ /proc/774/ /proc/3/ /proc/450/ /proc/491/ /proc/554/ /proc/595/
Arvestage, et kasutajana saate (täiesti loogiliselt) näha ainult enda, mitte aga teiste kasutajate protsesside infot. Sestap logige sisse administraatorina (root
) ja vaadake, milline info käib protsessi 1 kohta, milleks on init, mis vastutab kõigi teiste protsesside käivitamise eest:
$ su Password: # cd /proc/1 # ls -l total 0 -r-------- 1 root root 0 Aug 15 18:14 auxv -r--r--r-- 1 root root 0 Aug 15 18:14 cmdline lrwxrwxrwx 1 root root 0 Aug 15 18:14 cwd -> // -r-------- 1 root root 0 Aug 15 18:14 environ lrwxrwxrwx 1 root root 0 Aug 15 18:14 exe -> /sbin/init* dr-x------ 2 root root 0 Aug 15 18:14 fd/ -rw-r--r-- 1 root root 0 Aug 15 18:14 loginuid -r--r--r-- 1 root root 0 Aug 15 18:14 maps -rw------- 1 root root 0 Aug 15 18:14 mem -r--r--r-- 1 root root 0 Aug 15 18:14 mounts -rw-r--r-- 1 root root 0 Aug 15 18:14 oom_adj -r--r--r-- 1 root root 0 Aug 15 18:14 oom_score lrwxrwxrwx 1 root root 0 Aug 15 18:14 root -> // -rw------- 1 root root 0 Aug 15 18:14 seccomp -r--r--r-- 1 root root 0 Aug 15 18:14 stat -r--r--r-- 1 root root 0 Aug 15 18:14 statm -r--r--r-- 1 root root 0 Aug 15 18:14 status dr-xr-xr-x 3 root root 0 Aug 15 18:14 task/ -r--r--r-- 1 root root 0 Aug 15 18:14 wchan #
Kõigis kataloogides on ühesugused kirjed. Tutvustame siin lühidalt neist mõningaid:
cmdline
: see (pseudo)fail sisaldab kogu protsessi välja kutsunud käsku. See ei ole vormindatud: programmi ja argumentide vahel pole tühikuid, ka puuduvad reavahetused. Selle vaatamiseks tuleks kasutada käsku perl -ple 's,\00, ,g' cmdline.
cwd
: see nimeviit osutab protsessi aktiivsele töökataloogile (inglise keeles 'current working directory', millest ka lühend).
environ
: see fail sisaldab kõiki antud protsessile määratud keskkonnamuutujaid kujul MUUTUJA=väärtus
. Sarnaselt kirjele cmdline
ei ole väljund vähimalgi määral vormindatud: muutujaid ei eralda reavahetused, reavahetust pole ka lõpus. Selle vaatamiseks sobib käsk perl -ple 's,\00,\n,g' environ.
exe
: see nimeviit osutab käivitatavale failile, mis vastab töötavale protsessile.
fd
: selles alamkataloogis leiduvad protsessi poolt parajasti avatud failide deskriptorid (vt. allpool).
maps
: selle nimega toru sisu näidata lastes (näiteks käsuga cat) näete parajasti failiga seostatud protsessi aadressiruumi osasid. Väljad on paremalt vasakule järgmised: seosega seotud aadressiruum, seose õigused, suhtaadress (faili algusest), kus seos algab, seadme põhi- ja lisanumber (16-süsteemis), millel seotud fail asub, faili infosõlmenumber ning faili enda nimi. Kui seade on 0 ning infosõlmenumber või failinimi puuduvad, on tegemist anonüümse seosega. Vaadake mmap(2).
root
: see nimeviit osutab protsessi juurkataloogile. Tavaliselt on see /
, aga vaadake chroot(2).
status
: see fail sisaldab mitmesugust infot protsessi kohta: käivitatava faili nimi, praegune olek, PID ja PPID, reaalne ja toimiv UID ja GID, mälukasutus ja nii edasi. Pange tähele, et failid stat
ja statm
on iganenud: neis sisaldunud infot salvestatakse nüüd failis status
.
Kui me laseme näidata suvalise protsessi kataloogi fd
sisu, on tulemus umbes selline:
# ls -l /proc/8141/fd/ total 4 lrwx------ 1 peter peter 64 Aug 4 09:05 0 -> /dev/tty1 lrwx------ 1 peter peter 64 Aug 4 09:05 1 -> /dev/tty1 lrwx------ 1 peter peter 64 Aug 4 09:05 2 -> /dev/tty1 l-wx------ 1 peter peter 64 Aug 4 09:05 3 -> /home/peter/seti32/lock.sah #
Siin on tegemist protsessi avatud failide deskriptoritega. Iga avatud deksriptorit näitab nimeviit, mille nimeks on deskriptori number ja mis osutab antud deskriptori avatud failile[7]. Pange tähele nimeviitade õigusi: see on ainus koht, kus neil on mingi mõte, sest nad tähistavad õigusi, millega deskriptorile vastav fail avati.
[7] Kui Te meenutate, millest rääkis Sektsioon 4, “Ümbersuunamine ja torud”, peaksite teadma, mida tähendavad deskriptorid 0
, 1
ja 2
. Deskriptor 0
on standardsisend, 1
on standardväljund ja 2
on standardveaväljund.