Tips en Trucs 2014

Informatie over processen

Wanneer het fout gaat op een Linux server of computer, dan is het belangrijk te weten welk proces daarvoor verantwoordelijk is. Met andere woorden welk proces alle voorhanden zijnde middelen voor zich opeist. Het standaard hulpmiddel top en htop geven een algemeen overzicht van wat er zicht op uw systeem afspeelt. Om van een bepaald proces meer informatie te krijgen, gebruik je pidstat.

Met pidstat maak je statistische rapporten en het maakt deel uit van het sysstat hulpmiddelen pakket. De pidstat opdracht bekijkt individuele taken die door de Linux kernel beheerd worden. Het stuurt alle gegevens naar het standaard uitvoerapparaat (scherm) van de taken die je selecteert met de -p optie. Met de optie -p ALL worden gegevens over alle door de kernel beheerde taken weergegeven. Als je geen taken met de -p optie opgeeft, worden alle actieve door de kernel beheerde taken weergeven (dus taken met waarden verschillend van nul). Om taken te selecteren kan je gebruik maken van PID's en reguliere expressies op de namen van de processen.

Installatie

In openSUSE 13.1 installeer de pidstat met de volgende opdracht:

dany@linux-nlfy:~> sudo zypper install sysstat
Gegevens van installatiebron laden...
Lezen van geïnstalleerde pakketten...
Afhankelijkheden tussen pakketten oplossen...

Het volgende NIEUWE pakket zal worden geïnstalleerd:
  sysstat 

1 nieuw te installeren pakket.
Totale downloadgrootte: 246,0 KiB Na de operatie zal aanvullend 995,4 KiB 
worden gebruikt.
Doorgaan? [j/n/? alle opties tonen] (j): 
pakket sysstat-10.0.5-8.6.1.x86_64 wordt opgehaald
                                          (1/1), 246,0 KiB (995,4 KiB uitgepakt)
Ophalen: sysstat-10.0.5-8.6.1.x86_64.rpm ....................[klaar (1,1 MiB/s)]
(1/1) Installeert: sysstat-10.0.5-8.6.1 .................................[klaar]

Gebruik

De eenvoudigste manier om pidstat te gebruiken is met de optie -p ALL. Dit toont een lijst van alle processen met de middelen die ze gebruiken.

dany@linux-nlfy:~> pidstat -p ALL
Linux 3.11.10-11-desktop (linux-nlfy.site)      21-06-14        _x86_64_       (4 CPU)

16:24:20          PID    %usr %system  %guest    %CPU   CPU  Command
16:24:20            1    0,01    0,03    0,00    0,04     0  systemd
16:24:20            2    0,00    0,00    0,00    0,00     2  kthreadd
16:24:20            3    0,00    0,00    0,00    0,00     0  ksoftirqd/0
16:24:20            5    0,00    0,00    0,00    0,00     0  kworker/0:0H
16:24:20            7    0,00    0,00    0,00    0,00     0  migration/0
16:24:20            8    0,00    0,00    0,00    0,00     0  rcuc/0
16:24:20            9    0,00    0,00    0,00    0,00     0  rcub/0
16:24:20           10    0,00    0,01    0,00    0,01     2  rcu_preempt
16:24:20           11    0,00    0,00    0,00    0,00     3  rcuop/0
16:24:20           12    0,00    0,00    0,00    0,00     3  rcuop/1
16:24:20           13    0,00    0,00    0,00    0,00     3  rcuop/2
16:24:20           14    0,00    0,00    0,00    0,00     1  rcuop/3
16:24:20           15    0,00    0,00    0,00    0,00     0  rcuop/4
16:24:20           16    0,00    0,00    0,00    0,00     0  rcuop/5
16:24:20           17    0,00    0,00    0,00    0,00     0  rcuop/6
16:24:20           18    0,00    0,00    0,00    0,00     0  rcuop/7
16:24:20           19    0,00    0,00    0,00    0,00     0  rcu_bh
...
16:24:20         1579    0,02    0,00    0,00    0,02     0  kmix
16:24:20         1582    0,00    0,00    0,00    0,00     3  pulseaudio
16:24:20         1583    0,00    0,00    0,00    0,00     0  rtkit-daemon
16:24:20         1606    0,00    0,00    0,00    0,00     3  klipper
16:24:20         1609    0,00    0,00    0,00    0,01     3  polkit-kde-auth
16:24:20         1622    0,01    0,00    0,00    0,02     3  knotify4
16:24:20         1626    0,00    0,00    0,00    0,00     2  xbindkeys
16:24:20         1628    0,11    0,00    0,00    0,12     0  virtuoso-t
16:24:20         1648    0,00    0,00    0,00    0,01     0  nepomukfilewatc
16:24:20         1772    0,00    0,00    0,00    0,00     3  pickup
16:24:20         1818    0,00    0,00    0,00    0,00     2  systemd
16:24:20         1819    0,00    0,00    0,00    0,00     1  (sd-pam)
16:24:20         4760    0,00    0,00    0,00    0,00     0  kworker/0:0
16:24:20         4772    0,00    0,00    0,00    0,00     1  kworker/1:0
16:24:20         4815    0,01    0,00    0,00    0,01     1  konsole
16:24:20         4817    0,00    0,00    0,00    0,00     2  bash
16:24:20         4844    0,00    0,00    0,00    0,00     0  sshd
16:24:20         4847    0,00    0,00    0,00    0,00     1  sshd
16:24:20         4848    0,00    0,00    0,00    0,00     0  bash
16:24:20         4887    0,00    0,00    0,00    0,00     0  pidstat

Tijdsinterval

Zoals je merkt krijg, je een zeer lange lijst met alle processen. Dit kan handig zijn, maar soms ben je op zoek naar de processen die op dit moment middelen gebruiken. Daarvoor start je pidstat met een getal als optie. Dit getal is de tijd tussen opeenvolgende rapporten.

dany@linux-nlfy:~> pidstat 1
Linux 3.11.10-11-desktop (linux-nlfy.site)      21-06-14        _x86_64_       (4 CPU)

16:30:41          PID    %usr %system  %guest    %CPU   CPU  Command

16:30:42          PID    %usr %system  %guest    %CPU   CPU  Command
16:30:43         4915    1,00    1,00    0,00    2,00     3  pidstat

16:30:43          PID    %usr %system  %guest    %CPU   CPU  Command
16:30:44         4915    0,00    1,00    0,00    1,00     3  pidstat

16:30:44          PID    %usr %system  %guest    %CPU   CPU  Command
16:30:45         4915    1,00    0,00    0,00    1,00     3  pidstat

16:30:45          PID    %usr %system  %guest    %CPU   CPU  Command
16:30:46         4915    0,00    1,00    0,00    1,00     3  pidstat

16:30:46          PID    %usr %system  %guest    %CPU   CPU  Command

16:30:47          PID    %usr %system  %guest    %CPU   CPU  Command
16:30:48          845    0,00    1,00    0,00    1,00     2  ntpd
16:30:48         1628    1,00    0,00    0,00    1,00     0  virtuoso-t
16:30:48         4915    0,00    1,00    0,00    1,00     3  pidstat

16:30:48          PID    %usr %system  %guest    %CPU   CPU  Command
16:30:49         4915    1,00    1,00    0,00    2,00     3  pidstat

16:30:49          PID    %usr %system  %guest    %CPU   CPU  Command
16:30:50         4915    0,00    1,00    0,00    1,00     3  pidstat

16:30:50          PID    %usr %system  %guest    %CPU   CPU  Command
16:30:51         4915    0,00    1,00    0,00    1,00     3  pidstat

16:30:51          PID    %usr %system  %guest    %CPU   CPU  Command

16:30:52          PID    %usr %system  %guest    %CPU   CPU  Command
16:30:53         4915    0,00    1,00    0,00    1,00     3  pidstat

16:30:53          PID    %usr %system  %guest    %CPU   CPU  Command
16:30:54           10    0,00    1,00    0,00    1,00     0  rcu_preempt
16:30:54         4815    0,00    1,00    0,00    1,00     1  konsole
16:30:54         4915    1,00    1,00    0,00    2,00     3  pidstat

16:30:54          PID    %usr %system  %guest    %CPU   CPU  Command
^C

Dit rapport toont enkel processen die in het tijdsinterval andere middelen gebruiken.

Als je een tweede getal opgeeft, wordt deze als teller gebruikt. Zo krijg je met de opties 2 5 vijf rapporten met tijdsintervallen van 2 seconden.

dany@linux-nlfy:~> pidstat 2 5
Linux 3.11.10-11-desktop (linux-nlfy.site)      21-06-14        _x86_64_       (4 CPU)

16:37:37          PID    %usr %system  %guest    %CPU   CPU  Command
16:37:39         4947    0,50    0,50    0,00    0,99     3  pidstat

16:37:39          PID    %usr %system  %guest    %CPU   CPU  Command

16:37:41          PID    %usr %system  %guest    %CPU   CPU  Command
16:37:43          288    0,00    0,50    0,00    0,50     1  kworker/1:2
16:37:43         4947    0,00    1,00    0,00    1,00     3  pidstat

16:37:43          PID    %usr %system  %guest    %CPU   CPU  Command
16:37:45         4947    0,50    0,00    0,00    0,50     3  pidstat

16:37:45          PID    %usr %system  %guest    %CPU   CPU  Command
16:37:47         4815    0,50    0,00    0,00    0,50     0  konsole
16:37:47         4947    0,00    0,50    0,00    0,50     3  pidstat

Gemiddeld:        PID    %usr %system  %guest    %CPU   CPU  Command
Gemiddeld:        288    0,00    0,10    0,00    0,10     -  kworker/1:2
Gemiddeld:       4815    0,10    0,00    0,00    0,10     -  konsole
Gemiddeld:       4947    0,20    0,40    0,00    0,60     -  pidstat

Zonder opgave van een teller blijft pidstat rapporten aanmaken tot je het onderbreekt met bijvoorbeeld Ctrl + c.

Bepaalde middelen bekijken

Tot nu toe hebben we enkel de standaard middelen via pidstat bekeken, met name het CPU gebruik. Met extra opties kan je bepalen welke middelen je wilt bekijken:

Daarbij kan je meerdere middelen combineren. Om het CPU- en geheugengebruik weer te geven, gebruik je de volgende opdracht:

dany@linux-nlfy:~> pidstat 2 2 -u -r
Linux 3.11.10-11-desktop (linux-nlfy.site)      21-06-14        _x86_64_       (4 CPU)

17:27:28          PID    %usr %system  %guest    %CPU   CPU  Command
17:27:30         5122    0,00    0,50    0,00    0,50     3  pidstat

17:27:28          PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
17:27:30         5122    196,00      0,00    4760   1084   0,01  pidstat

17:27:30          PID    %usr %system  %guest    %CPU   CPU  Command
17:27:32           10    0,00    0,50    0,00    0,50     0  rcu_preempt
17:27:32         5122    0,00    0,50    0,00    0,50     3  pidstat

17:27:30          PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
17:27:32         5122    198,00      0,00    4760   1116   0,01  pidstat

Gemiddeld:        PID    %usr %system  %guest    %CPU   CPU  Command
Gemiddeld:         10    0,00    0,25    0,00    0,25     -  rcu_preempt
Gemiddeld:       5122    0,00    0,50    0,00    0,50     -  pidstat

Gemiddeld:        PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
Gemiddeld:       5122    197,00      0,00    4760   1100   0,01  pidstat

Bepaalde processen weergeven

Om een bepaald proces in het oog te houden, gebruik je de optie -p met een PID nummer of de -C optie met een tekenreeks. Enkel de processen waarin de tekenreeks in de opdrachtregel voorkomt, worden weergegeven.

dany@linux-nlfy:~> pidstat -C vlc
Linux 3.11.10-11-desktop (linux-nlfy.site)      21-06-14        _x86_64_       (4 CPU)

17:33:59          PID    %usr %system  %guest    %CPU   CPU  Command
17:33:59         5137    1,30    0,04    0,00    1,34     2  vlc

De -C optie kan je met de andere opties combineren om nog specifiekere opdrachten samen te stellen.