Linux Netwerken Processen

30
Linux Netwerkbeheerder – Jelle Vanderlinden p. 1 Processen Soorten processen Het init-proces Beheer van processen Schedulen van processen Prioriteiten Processen en /proc

description

linux netwerken

Transcript of Linux Netwerken Processen

ProcessenProcessen
Inleiding
Interactieve processen
Linux Netwerkbeheerder – Jelle Vanderlinden p. *
Lijst draaiende processen: ps aux
bert@brigid bert $ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1488 88 ? S 10:32 0:05 init
root 2 0.0 0.0 0 0 ? SW 10:32 0:00 [migration_CPU0]
root 3 0.0 0.0 0 0 ? SW 10:32 0:04 [keventd]
root 4 0.0 0.0 0 0 ? SWN 10:32 0:00 [ksoftirqd_CPU0]
root 5 0.0 0.0 0 0 ? SW 10:32 0:01 [kswapd]
root 6 0.0 0.0 0 0 ? SW 10:32 0:00 [bdflush]
root 7 0.0 0.0 0 0 ? SW 10:32 0:00 [kupdated]
root 12 0.0 0.0 0 0 ? SW 10:32 0:00 [kreiserfsd]
root 157 0.0 0.2 1844 660 ? S 10:32 0:00 /sbin/devfsd /dev
root 420 0.0 0.0 0 0 ? SW 10:33 0:00 [khubd]
root 949 0.0 0.1 1568 456 ? S 10:33 0:00 metalog [MASTER]
root 950 0.0 0.0 1548 148 ? S 10:33 0:00 metalog [KERNEL]
root 1422 0.0 0.2 1672 604 ? S 10:35 0:00 /usr/sbin/cron
xfs 1587 0.0 2.0 7404 4796 ? S 10:35 0:00 /usr/X11R6/bin/xfs -daemon -config
[...]
root 1644 0.0 0.2 1616 652 vc/6 S 10:35 0:00 /sbin/agetty 38400 tty6 linux
root 1677 0.0 0.0 2812 4 ? S 10:35 0:00 /usr/kde/3.2/bin/kdm
root 1680 2.1 26.4 83220 63380 ? S 10:35 5:25 /etc/X11/X vt7 -auth /var/run/xauth
root 1681 0.0 0.0 3140 4 ? S 10:35 0:00 -:0
bert 1691 0.0 0.0 2160 4 ? S 10:36 0:00 /bin/sh /etc/X11/Sessions/kde-3.2.0
bert 1705 0.0 0.0 2164 4 ? S 10:36 0:00 /bin/sh --login /usr/kde/3.2/bin/st
bert 1741 0.0 0.4 21688 1144 ? S 10:36 0:00 kdeinit: Running...
[...]
bert 2170 0.2 2.1 26536 5196 ? S 13:43 0:09 kdeinit: konsole
bert 2172 0.0 0.0 2760 4 pty/s0 S 13:43 0:00 /bin/bash
bert 2298 0.0 0.0 2160 4 ? S 13:45 0:00 /bin/sh /usr/bin/firefox
bert 2302 0.0 0.0 2160 4 ? S 13:45 0:00 /bin/sh /opt/firefox/run-mozilla.sh
bert 2308 0.3 6.7 37624 16220 ? S 13:45 0:13 /opt/firefox/firefox-bin
bert 2309 0.0 6.7 37624 16220 ? S 13:45 0:00 /opt/firefox/firefox-bin
bert 2310 0.0 6.7 37624 16220 ? S 13:45 0:00 /opt/firefox/firefox-bin
bert 2311 0.0 6.7 37624 16220 ? S 13:45 0:00 /opt/firefox/firefox-bin
bert 2974 0.2 0.7 2764 1776 pty/s4 S 14:41 0:00 /bin/bash
bert 3012 0.0 0.3 2468 836 pty/s4 R 14:43 0:00 ps aux
Linux Netwerkbeheerder – Jelle Vanderlinden p. *
Het proces init
Start andere processen op
Bepaalt runlevel. Voor RedHat:
Halt 4) Niet gebruikt
Multiuser met netwerk
Instellingen: /etc/inittab
# Default runlevel:
ud::once:/sbin/update
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
x:5:respawn:/etc/X11/prefdm -nodaemon
Opstarten van services door het rc script
Scripts in /etc/rc.d/ per service, vb.
/etc/init.d/network start (stop, restart)
Per runlevel vastleggen welke services opgestart moeten worden: /etc/rc.d/rc[0-6].d/
bevatten symbolische links naar service-scripts, vb.
S05network, K18syslog, ...
getal bepaalt volgorde: eerst S00, laatst S99
Automatisch service opstarten: link maken!
ln -s /etc/rc.d/firewall /etc/rc.d/rc5.d/S99firewall
ln -s /etc/rc.d/firewall /etc/rc.d/rc5.d/K99firewall
Linux Netwerkbeheerder – Jelle Vanderlinden p. *
Beheer van processen
top: gesorteerd volgens activiteit
top - 09:15:34 up 14 min, 1 user, load average: 0.22, 0.28, 0.20
Tasks: 66 total, 1 running, 65 sleeping, 0 stopped, 0 zombie
Cpu(s): 24.6% user, 34.8% system, 0.0% nice, 40.7% idle
Mem: 239480k total, 227152k used, 12328k free, 3204k buffers
Swap: 257000k total, 708k used, 256292k free, 98360k cached
[...]
Processen op de achtergrond
Ctrl-Z (suspend)
bg (background)
brigid root 09:20:57 # ls
[1]+ Done updatedb
brigid root 09:33:23 #
Processen deactiveren
ps aux | grep dhcp
Werkt niet altijd, oplossing:
Afhankelijkheden tussen processen bekijken:
Schedulen van processen
De daemon cron:
Configuratie: tekstbestanden
/var/cron/tabs/ (directory)
Een cron-bestand (zie “man 5 crontab”):
Eerste vijf velden: tijdsaanduiding
# use /bin/sh to run commands, no matter what /etc/passwd says
SHELL=/bin/sh
# mail any output to `paul', no matter whose crontab this is
MAILTO=paul
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# run at 2:15pm on the first of every month -- output mailed to paul
15 14 1 * * $HOME/bin/monthly
# run at 10 pm on weekdays, annoy Joe
0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
5 4 * * sun echo "run at 5 after 4 every sunday"
Linux Netwerkbeheerder – Jelle Vanderlinden p. *
Crontab-bestand voor gebruiker aanmaken
-l: lijst actieve crontab-instellingen
Het commando at
Interactieve prompt, afsluiten met EOF (Ctrl-D)
Gebruik beperken: /etc/at.allow en
Prioriteit
Aanpassen: commando nice
vb. nice -n -20 ls /
Linux Netwerkbeheerder – Jelle Vanderlinden p. *
Loggen systeemactiviteit: syslogd daemon
Configuratie: /etc/syslog.conf
Processen en /proc
Pseudo-bestandssysteem /proc
Algemene informatie:
kmsg: kernel messages
net/: beschikbare netwerkprotocollen (netstat)
Algemene informatie (vervolg)
echo 4096 > /proc/sys/fs/file-max
version: kernelversie
Informatie per proces
cmdline: volledige commandoregel
maps: geheugengebieden van proces
Linux Netwerkbeheerder – Jelle Vanderlinden p. *
De kernel
Wat doet een kernel?
Unix besturingssystemen: modulair
Taken van een besturingssysteem
Geheugenbeheer
Procesbeheer
user-mode: geen privileges, eigen afgeschermde omgeving, kan worden onderbroken
“Signalen” naar processen sturen (p.245-247)
2 SIGINT: proces onderbreken (Ctrl-C)
9 SIGKILL: proces afbreken (= kill -9)
15 SIGTERM: proces afsluiten (= kill)
20 SIGSTP: proces stilzetten (suspend) (Ctrl-Z)
...
Device-drivers
Bestandssysteem
Opbouw van de kernel
Oorspronkelijk “monolitische” kernel
vb. Filesysteem root-partitie, netwerkondersteuning, ...
Modules laden
soms “automagisch”
Afhankelijkheden tussen modules opvangen
Module + afhankelijkheden laden: modprobe
Parameters instellen in /etc/modules.conf
Een kernel compileren
/usr/src/linux/
Stappen in compilatieproces:
Afhankelijkheidsrelaties aanbrengen: make dep
Linux Netwerkbeheerder – Jelle Vanderlinden p. *
Linux Netwerkbeheerder – Jelle Vanderlinden p. *
Stappen in compilatieproces (vervolg):
Kernel compileren: make bzImage
resultaat: “kernel image” in
Kernel installeren: