home       inleiding       sysadmin       services       links       bash       werk       nothing      

processen

Process administratie in Linux is niet moeilijk. We gebruiken process administratie vooral om te kijken of een bepaalde service wel degelijk draait, en verder vooral om zich misdragende processen te beeindigen.
Er zijn een 5 tal nuttige commando's.
 

  1. ps
     
    ps is een veel gebruikt commando om een eerste zicht op processen (of één process) te krijgen. Vaak in combinatie met de optie -A of aux.
     
    voorbeeld:
    martin@phaedra ~ $ ps -A
     
    PID TTY          TIME CMD
    1 ?        00:00:01 init
    2 ?        00:00:00 kthreadd
    3 ?        00:00:00 migration/0
    4 ?        00:00:00 ksoftirqd/0
    5 ?        00:00:00 watchdog/0
    6 ?        00:00:00 migration/1
    7 ?        00:00:00 ksoftirqd/1
    8 ?        00:00:00 watchdog/1
    9 ?        00:00:01 events/0
    10 ?        00:00:02 events/1
    11 ?        00:00:00 khelper
    47 ?        00:00:00 kblockd/0
    48 ?        00:00:00 kblockd/1
    51 ?        00:00:00 kacpid
    52 ?        00:00:00 kacpi_notify
    131 ?        00:00:00 kseriod
    165 ?        00:00:00 pdflush
    166 ?        00:00:02 pdflush
    167 ?        00:00:00 kswapd0
    4885 tty4     00:00:00 getty
    4888 tty2     00:00:00 getty
    4890 tty3     00:00:00 getty
    4892 tty6     00:00:00 getty
    5081 ?        00:00:00 acpid
    5116 ?        00:00:00 kondemand/0
    5117 ?        00:00:00 kondemand/1
    6068 ?        00:00:00 krfcommd
    6140 ?        00:00:00 atd
    6160 ?        00:00:00 cron
    6193 ?        00:00:04 apache2
    6280 tty1     00:00:00 getty
    6449 ?        00:00:00 esd
    6737 ?        00:00:00 cifsoplockd
    6738 ?        00:00:00 cifsdnotifyd
    6746 ?        00:00:00 cifsd
    6748 ?        00:00:00 cifsd
    ..........................................> ingekort <........
    12199 ?        00:00:07 dirmngr
    15052 ?        00:00:08 mintMenu
    15055 ?        00:00:00 trashapplet
    15299 ?        00:00:00 gvfsd-computer
    15308 ?        00:00:00 cifsd
    16317 ?        00:00:02 gnome-terminal
    16320 ?        00:00:00 gnome-pty-helpe
    16321 pts/0    00:00:00 bash
    16363 ?        00:00:00 firefox
    16366 ?        00:00:00 run-mozilla.sh
    16370 ?        00:03:52 firefox-bin
    16912 pts/0    00:00:00 ps

    De eerste kolom is de Process IDentifier (PID). Hiermee identificeren we elk apart process.
    In de tweede kolom staat de naam van de terminal die het process heeft opgestart. Veel processen worden door andere processen opgestart en hebben dan ook geen TTY.
    De derde kolom geeft de gebruikte cpu tijd weer, en de vierde en laatste kolom het gebruikte commando.
     
    We kunnen de output van ps -A filteren met een pipe naar grep:

    martin@phaedra ~ $ ps -A | grep gnome
     
    14831 ?        00:00:00 gnome-keyring-d
    14946 ?        00:00:01 gnome-settings-
    14961 ?        00:00:06 gnome-panel
    14969 ?        00:00:05 gnome-screensav
    14997 ?        00:02:48 gnome-do
    15005 ?        00:00:00 gnome-power-man
    16317 ?        00:00:02 gnome-terminal
    16320 ?        00:00:00 gnome-pty-helpe

     

  2. kill
     
    We kunnen processen in de terminal stoppen met <CTRL><C>. Dit werkt meestal. Maar niet altijd. Bovendien worden veel processen grafisch opgestart met een muisklik, en <CTRL><C> is dan niet mogelijk.
     
    Indien een process raar doet kun je gebruik maken van het commando kill om het te beëindigen.
     
    kill wordt gevolgd door het PID van het process dat we willen beëindigen.
    We kunnen alleen processen 'killen' waar we zelf eigenaar van zijn.
    16942 ?        00:00:00 gnome-terminal
    16945 ?        00:00:00 gnome-pty-helpe
    16946 pts/0    00:00:00 bash
    16958 pts/0    00:00:00 ps
     
    martin@phaedra ~ $ kill 16946 

    Zonder optie stuurt kill een zogenaamd TERM signaal(terminate) naar de kernel (signal 15). Een beleefde vraag om te stoppen. Maar soms is dit niet voldoende om een process te stoppen, en in dat laatste geval kunnen we de optie -9 toevoegen. De optie -9 staat voor KILL signal 9.
     
    Uitgevoerd als root is dit een sterk wapen tegen CPU of MEMORY misbruikers:
     
    martin@phaedra ~ $ kill -9 16946
     

  3. killall
     
    Met killall beëindig je alle processen met dezelfde commandonaam. Nadeel van killall is dat je eerst de naam van het process moet kennen eer je het kunt beëindigen. Tweede nadeel is dat je alle processen met die naam vernietigt:
     
    martin@phaedra ~ $ killall firefox-bin
     
     4. xkill
     
    xkill vernietigt grafische toepassingen met een killer-cursor. Pas op, dit commando vernietigt desgewenst ook taakbalken, klokken enzomeer.
     
  4. top
     
    Het commando top geeft een dynamisch beeld van de processen gerangschikt op cpu gebruik:
    $ top
     
    top - 13:10:10 up 3 days, 22:18,  3 users,  load average: 0.33, 0.35, 0.21
    Tasks: 161 total,   1 running, 160 sleeping,   0 stopped,   0 zombie
    Cpu(s):  2.0%us,  1.3%sy,  0.0%ni, 96.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:   2595140k total,   955504k used,  1639636k free,      276k buffers
    Swap:  4883752k total,        0k used,  4883752k free,   526988k cached
    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND   
    16370 bert      20   0  286m 106m  22m S    1  4.2   0:52.24 firefox-bin
    16452 root      20   0  2308 1148  852 R    1  0.0   0:00.22 top
    14797 root      20   0  117m  23m 9700 S    0  0.9   2:01.36 Xorg
    1 root      20   0  1812  832  608 S    0  0.0   0:01.38 init
    2 root      15  -5     0    0    0 S    0  0.0   0:00.00  kthreadd
    3 root      RT  -5     0    0    0 S    0  0.0   0:00.00  migration/0
    4 root      15  -5     0    0    0 S    0  0.0   0:00.10  ksoftirqd/0
    5 root      RT  -5     0    0    0 S    0  0.0   0:00.00  watchdog/0
    6 root      RT  -5     0    0    0 S    0  0.0   0:00.00  migration/1
    7 root      15  -5     0    0    0 S    0  0.0   0:00.04  ksoftirqd/1
    8 root      RT  -5     0    0    0 S    0  0.0   0:00.00  watchdog/1
    9 root      15  -5     0    0    0 S    0  0.0   0:01.48  events/0
    10 root      15  -5     0    0    0 S    0  0.0   0:02.04  events/1
    11 root      15  -5     0    0    0 S    0  0.0   0:00.00  khelper
    47 root      15  -5     0    0    0 S    0  0.0   0:00.06  kblockd/0
    48 root      15  -5     0    0    0 S    0  0.0   0:00.04  kblockd/1
    51 root      15  -5     0    0    0 S    0  0.0   0:00.00  kacpid
    52 root      15  -5     0    0    0 S    0  0.0   0:00.00  kacpi_notify
    131 root      15  -5     0    0    0 S    0  0.0   0:00.00  kseriod
    165 root      20   0     0    0    0 S    0  0.0   0:00.00  pdflush

    Je kan top verlaten met de letter Q. In top kun je een process be-eindigen door de letter K in te tikken, daarna het PID, en zonodig het cijfer 9 . Voor meer mogelijkheden kan je hulp opvragen met H
     
    Bovenaan top zien we statistieken van het systeem: tijd, uptime, aantal ingelogde gebruikers, belasting van het systeem (load average), aantal draaiende processen (tasks), cpu, memory en swap gebruik.
    Daaronder vind je de processen die draaien op het systeem geordend in 11 kolommen:
     
    PID = Process ID: het nummer (1 tot 65535) dat elk uniek proces identificeert
    USER = de gebruiker die eigenaar is van het process
    PRI = de "priority" zoals ingesteld door de kernel. Normaal gezien een waarde tussen 0 en 100; RT betekent real-time
    NI = de "nice value" van een process; dit is een waarde van -20 tot +19 waar -20 de hoogste prioriteit is. Met de nice value wordt de actuele prioriteit door de user bijgeregeld
    VIRT = het totaal aantal virtueel geheugen (physiek RAM + SWAP) dat door het process wordt gebruikt
    RES = (resident) het gedeelte physiek RAM dat door een proces wordt gebruikt
    SHR = (share) stuk gebruikt geheugen dat door andere processen kan worden gebruikt
    S = Process Status:
            'D' = uninterruptible sleep - 'R' = running - 'S' = sleeping - 'T' = traced or stopped - 'Z' = zombie
    %CPU = percentage cpu gebruik
    %MEM = percentage geheugen gebruik
    TIME+ = tot hiertoe gebruikte cpu tijd
    COMMAND = het ingetikte commando
     

  5. pstree
     
    pstree geeft de boomstructuur van de processen weer. Als u vanuit een terminal of grafische omgeving een programma opstart, is die terminal of de GUI het ouderproces. Met pstree krijgt u die hierarchie op scherm. Alle processen vertrekken in het proces init of sytemd, afhankelijk van de distributie.
     
    voorbeeld:

    $ pstree
    init─┬─acpid
         ├─apache2───10*[apache2]
         ├─atd
         ├─cron
         ├─dbus-daemon
         ├─fail2ban-server───3*[{fail2ban-server}]
         ├─6*[getty]
         ├─ntpd
         ├─rsyslogd───3*[{rsyslogd}]
         ├─sshd─┬─sshd───sshd───bash───mc───bash
         │      ├─sshd───sshd───bash───pstree
         │      └─2*[sshd───sshd───bash]
         ├─systemd-logind
         ├─systemd-udevd
         ├─upstart-file-br
         ├─upstart-socket-
         ├─upstart-udev-br
         └─whoopsie───2*[{whoopsie}]
    

    In het voorbeeld hierboven valt vooral de vernesting van ssh-service (sshd) op.