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.
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]
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
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.
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
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.