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.
- 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
ofaux
.
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 vanps -A
filteren met een pipe naargrep
: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
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 commandokill
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
killall
Metkillall
beëindig je alle processen met dezelfde commandonaam. Nadeel vankillall
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.
top
Het commandotop
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
meer weten: https://www.howtogeek.com/668986/how-to-use-the-linux-top-command-and-understand-its-output/
-
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. Metpstree
krijgt u die hierarchie op scherm. Alle processen vertrekken in het procesinit
ofsytemd
, 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.