ps

Takže teraz viete ako prepínať tam a naspäť medzi niekoľkými procesmi, ktoré ste naštartovali z príkazového riadku. A tiež viete, že existuje mnoho procesov bežiacich po celý čas. Takže ako si vypíšete všetky tieto programy? Nuž, použijete program ps(1). Tento program má mnoho volieb, takže tu si popíšeme len tie najpodstatnejšie. Úplný zoznam nájdete v manuálovoej stránke pre ps. Manuálové stránky sú podrobnejšie popísané v sekcii nazvanej man v Kapitole 2.

Jednoducho naťukaním ps dostanete zoznam programov bežiacich na vašom termináli. Mnoho krát, to bude veľmi krátky výpis:

   $ ps
      PID TTY          TIME CMD
     7923 ttyp0    00:00:00 bash
     8059 ttyp0    00:00:00 ps

Hoci to nie je veľa procesov, informácia je to typická. Použitím ps dostanete rovnaké stĺpce, bez ohľadu na to koľko procesov beží. Takže čo to všetko znamená?

Nuž, PID je identifkátor procesu. Všetky procesy majú unikátny identifikátor. Pri kerneloch 2.2.x, tento identifikátor procesu môže byť kdekoľvek medzi 1 a 32767. Každý proces má priradený nasledujúci voľný PID. Keď proces skončí (alebo je zabitý, ako uvidíte v nasledujúcel sekcii), odovzdá svoje PID. Keď sa dosiahne maximálne PID, ako nasledujúce bude vybrané najnižšie voľné. To sa pravdepodobne zmení v nadchádzajúcej sérií jadra 2.4 a so zavedením 32-bitových PID.

Stĺpec TTY ukazuje, na ktorom termináli proces beží. Spustením samotného ps len vypíše zoznam programov bežiacich na aktuálnom termináli, takže všetky procesy ukazjú rovnakú informáciu v stĺpci TTY. Ako môžete vidieť, oba vypísané procesy bežia na ttyp0. To naznačuje, že boli spustené z iného stroja, alebo z nejakého X terminálu.

Stĺpec TIME ukazuje koľko CPU času už proces bežal. To je rozdielne od skutočného množstva času, čo proces beží. Pamätajte si, že Linux je mnohoúlohový operačný systém. Existuje veľa procesov bežiacich celú dobu, a každý z týchto procesov dostáva malý kúsok času procesora. Takže stĺpec TIME by mal ukazovať oveľa menej času pre každý proces, než v skutočnosti trvá, kým zbehne. Ak vidíte viac než niekoľko minút v stĺpci TIME, môže to znamenať, že niečo nie je v poriadku.

No a nakoniec stĺpec CMD ukazuje aký program to vlastne je. V tomto stĺpci je len základné meno programu, nie prepínače, parametre alebo podobné informácie. Aby sme získali tieto informácie, budeme potrebovať použiť jednu z mnohých volieb programu ps. Popíšeme ich len stručne.

Úplný zoznam procesov bežiacich na vašom systéme môžete dostať správnou kombináciu prepínačov. Výsledkom bude pravdepodobne dlhý výpis procesov ( päťdesiatpäť na mojom laptope zatiaľ čo píšem túto vetu), takže skrátim výstup:

   $ ps -ax
   PID TTY      STAT   TIME COMMAND
     1 ?        S      0:03 init [3]
     2 ?        SW     0:13 [kflushd]
     3 ?        SW     0:14 [kupdate]
     4 ?        SW     0:00 [kpiod]
     5 ?        SW     0:17 [kswapd]
    11 ?        S      0:00 /sbin/kerneld
    30 ?        SW     0:01 [cardmgr]
    50 ?        S      0:00 /sbin/rpc.portmap
    54 ?        S      0:00 /usr/sbin/syslogd
    57 ?        S      0:00 /usr/sbin/klogd -c 3
    59 ?        S      0:00 /usr/sbin/inetd
    61 ?        S      0:04 /usr/local/sbin/sshd
    63 ?        S      0:00 /usr/sbin/rpc.mountd
    65 ?        S      0:00 /usr/sbin/rpc.nfsd
    67 ?        S      0:00 /usr/sbin/crond -l10
    69 ?        S      0:00 /usr/sbin/atd -b 15 -l 1
    77 ?        S      0:00 /usr/sbin/apmd
    79 ?        S      0:01 gpm -m /dev/mouse -t ps2
    94 ?        S      0:00 /usr/sbin/automount /auto file /etc/auto.misc
   106 tty1     S      0:08 -bash
   108 tty3     SW     0:00 [agetty]
   109 tty4     SW     0:00 [agetty]
   110 tty5     SW     0:00 [agetty]
   111 tty6     SW     0:00 [agetty]
   [output cut]

Väčšina týchto procesov sa štartuje počas bootovanie na väčšina systémov. Ja som už urobil nejaké modifikácie na mojom systéme, takže vo vašom prípade to bude pravdepodobne trocha iné. Napriek tomu budete vidieť väčšinu týchto procesov aj na svojom systéme. Ako môžete vidieť, tieto prepínače zobrazujú aj parametre bežiacich procesov. Prináša tiež niekoľko ďalších stĺpcov a iný zaujímavý výstup.

Najprv si všimnete, že väčšina týchto procesov je vypísaných ako bežiacich na tty “?”. To sú procesy, ktoré boli naštartované z terminálu, ktorý už nie je aktívny. Preto, už nie sú spojené so žiadnym konkrétnym terminálom.

Po druh, je tu nový stĺpec: STAT. Ukazuje stav procesu. S znamená spiaci: proces čaká na to, že sa niečo stane. Z znamená zombia. Zombia je taký proces, ktorého rodič zomrel, a zanechal po sebe proces potomka. To nie je dobrá vec.

Ak chcete vidieť ešte viac informácií o bežiacich procesoch, skúste toto:

   $ ps -aux
   USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
   root         1  0.0  0.0   344   80 ?        S    Mar02   0:03 init [3]
   root         2  0.0  0.0     0    0 ?        SW   Mar02   0:13 [kflushd]
   root         3  0.0  0.0     0    0 ?        SW   Mar02   0:14 [kupdate]
   root         4  0.0  0.0     0    0 ?        SW   Mar02   0:00 [kpiod]
   root         5  0.0  0.0     0    0 ?        SW   Mar02   0:17 [kswapd]
   root        11  0.0  0.0  1044   44 ?        S    Mar02   0:00 /sbin/kerneld
   root        30  0.0  0.0  1160    0 ?        SW   Mar02   0:01 [cardmgr]
   bin         50  0.0  0.0  1076  120 ?        S    Mar02   0:00 /sbin/rpc.port
   root        54  0.0  0.1  1360  192 ?        S    Mar02   0:00 /usr/sbin/sysl
   root        57  0.0  0.1  1276  152 ?        S    Mar02   0:00 /usr/sbin/klog
   root        59  0.0  0.0  1332   60 ?        S    Mar02   0:00 /usr/sbin/inet
   root        61  0.0  0.2  1540  312 ?        S    Mar02   0:04 /usr/local/sbi
   root        63  0.0  0.0  1796   72 ?        S    Mar02   0:00 /usr/sbin/rpc.
   root        65  0.0  0.0  1812   68 ?        S    Mar02   0:00 /usr/sbin/rpc.
   root        67  0.0  0.2  1172  260 ?        S    Mar02   0:00 /usr/sbin/cron
   root        77  0.0  0.2  1048  316 ?        S    Mar02   0:00 /usr/sbin/apmd
   root        79  0.0  0.1  1100  152 ?        S    Mar02   0:01 gpm
   root        94  0.0  0.2  1396  280 ?        S    Mar02   0:00 /usr/sbin/auto
   chris      106  0.0  0.5  1820  680 tty1     S    Mar02   0:08 -bash
   root       108  0.0  0.0  1048    0 tty3     SW   Mar02   0:00 [agetty]
   root       109  0.0  0.0  1048    0 tty4     SW   Mar02   0:00 [agetty]
   root       110  0.0  0.0  1048    0 tty5     SW   Mar02   0:00 [agetty]
   root       111  0.0  0.0  1048    0 tty6     SW   Mar02   0:00 [agetty]
   [output cut]

To poriadne veľa informácií. V podstate pribudla informácia o užívateľovi, ktorý naštartoval proces, koľko systémových zdrojov proces používa ( stĺpce %CPU, %MEM, VSZ, a RSS ), a v aký dátum bol proces naštartovaný. Prirodzene je to veľa informácií, ktoré sa môžu systémovému administrátorovi zísť. Tiež si všimnete niečo iné: informácie teraz zasahujú za kraj obrazovky takže ju už všetku nemôžete vidieť. Nuž, prepínač “-w” to vyrieši.

Nevyzerá to prekrásne, ale svoju prácu to odvedie. Teraz dostanete úplný výpis pre každý proces. O procesoch sa možno dozvedieť dokonca ešte viac informácií. Pozrite si veľmi podrobnú manuálovú stránku pre ps. Napriek tomu prepínače, ktoré sme ukázali sú najpopulárnejšie a sú to tie, ktoré budete najčastejšie potrebovať.