Init en de daemonen



Programma's (waaronder de netwerkdiensten) worden onder Linux als volgt gestart:

  1. De basisdiensten van het besturingssysteem worden gestart door de run(level)manager init, die afhankelijk van de manier waarop het systeem moet lopen (runlevel 1-7) bepaalde scripts lanceert. Het runlevel opstartmechanisme is van UNIX System V overgenomen.

  2. Zodra een gewone gebruiker op de console inlogt, worden de inlogscripts van zijn shell gestart. Voor bash is dit /home/user/.bashrc. Ook hiermee worden programma's gestart, vrijwel altijd onder het account van de inloggende gebruiker.

  3. Vanuit zijn shell kan een gebruiker natuurlijk ook programma's starten: grafisch via een muisklik of via het toetsenbord op de console.

  4. Netwerkgebruikers kunnen programma's via de internet superserver starten.

De KDE applicatie ktop geeft in de Show Tree view een beeld van wat er zoal in een Linux systeem gebeurt.

Init

> Top <

Init is de moeder van alle processen. Init is het eerste programma dat wordt gestart (Proces ID 1). Vervolgens activeert dit (initialisatie)programma allerlei basisdiensten door de symbolische links in /etc/init.d/ te starten. Zo ontstaat een waaier van processen, uiteindelijk resulterend in uw inlogscherm (console, xdm).

De meest basale diensten worden onder het rootaccount opgestart, geavanceerde netwerkdiensten draaien meestal onder hun eigen account.

Init en de init-scripten in /etc/init.d of /sbin/init.d zijn enigszins te vergelijken met de autoexec.bat van DOS en OS/2. Ze worden na de stuurbestanden (in DOS de config.sys drivers, in Linux kerneldrivers) gestart. Ze zetten automatisch processen in gang.

Runlevels

Het bestand /etc/inittab bevat de definities van de runlevels: de modi waarin het besturingssysteem loopt.

# runlevel 0 is halt
# runlevel S is single-user
# runlevel 1 is multi-user without network
# runlevel 2 is multi-user with network
# runlevel 3 is multi-user with network and xdm
# runlevel 6 is reboot

Onder SuSE 6.3 zou telinit 3 u dus grafisch laten inloggen met xdm. Met init 0 of 6 sluit u het systeem af. Met init- S is systeemonderhoud te plegen. Bijvoorbeeld een backup of een controle van het bestandssysteem.

init s
mount -o remount,ro /
fsck.reiserfs --rebuild-tree
mount -o remount,rw /
init 6 

Natuurlijk is een verandering van runlevel alleen als root door te voeren. Zoals u ziet blijken er nog meer runlevels te bestaan.

sjoerd@visser:~ su
Password:
root@visser:/home/sjoerd init
Usage: init 0123456SsQqAaBbCcUu

U kunt ook aangeven in welk runlevel u wilt inloggen. Bij mij is dat niet-grafisch (runlevel 2). Door de 2 in een 3 te veranderen zou ik het xdm inlogscherm krijgen.

# default runlevel
id:2:initdefault:

Hieronder volgt een klassieke indeling van de runlevels (die dus NIET gevolgd wordt door SuSE).

init 0

Runlevel 0 (halt) sluit het systeem onherroepelijk af

init 1

Runlevel 1 (single user mode) laat slechts een gebruiker toe. U hebt het root wachtwoord nodig. Dit kan handig zijn als u systeemonderhoud (fsck) pleegt.

init 2

Runlevel 2 (multi user mode) is gelijk aan runlevel 3 zonder netwerk (NFS).

init 3

Runlevel 3 (full multi-user mode) is de standaard modus. Linux is gereed voor het gebruik door meerdere personen.

init 4

Runlevel 4 (unused) komt in de praktijk neer op runlevel 3.

init 5

Runlevel 5 (X11) start een grafisch inlogscherm op.

init 6

Runlevel 6 (reboot) herstart Linux.

Nog even terug naar mijn /etc/inittab :

# /sbin/init.d/rc takes care of runlevel handling
#
# runlevel 0 is halt
# runlevel S is single-user
# runlevel 1 is multi-user without network
# runlevel 2 is multi-user with network
# runlevel 3 is multi-user with network and xdm
# runlevel 6 is reboot
l0:0:wait:/sbin/init.d/rc 0
l1:1:wait:/sbin/init.d/rc 1
l2:2:wait:/sbin/init.d/rc 2
l3:3:wait:/sbin/init.d/rc 3
#l4:4:wait:/sbin/init.d/rc 4
#l5:5:wait:/sbin/init.d/rc 5
l6:6:wait:/sbin/init.d/rc 6

In het bovenstaande wordt steeds ook de lokatie van de init scripten aangeven. Hier /sbin/init.d en subdirectories. Runlevels 4 en 5 zijn gedeactiveerd.

Voor de scripten van het default runlevel 3 wordt naar /sbin/init.d/rc3 verwezen.

sjoerd@visser:/sbin/init.d/rc3.d ls
K10axnet K23pcnfsd K40network S09argus S20lpd
K10mysql K24ypclient K42pcmcia S09nfs S20mysql
K10wwwoffle K27quotad K44i4l_hardware S09syslog S20ntopd
etc

Gaat u daar kijken (mc), dan ziet u dat het om symbolische links gaat. Ze beginnen met een S van start of de K van kill. Het zijn verwijzingen naar scripts die respectievelijk bij het binnenkomen en het verlaten van de runlevels moeten worden uitgevoerd. De eigenlijke scripts worden centraal in de onderliggende map (../ = /sbin/init.d ) bewaard.

sjoerd@visser:/sbin/init.d/rc3.d ls -l
total 0
lrwxrwxrwx 1 root root 8 Sep 22 1999 K10axnet - ../axnet
lrwxrwxrwx 1 root root 8 Apr 17 21:06 K10mysql - ../mysql

Andere systemen gebruiken /etc/rc.d en subdirectories. Onder SuSE 6.3 is dat een symlink naar /sbin/init.d .

root@visser:/sbin/init.d ls
README cron identd nfs random reboot sshd
apache dhclient idled nfsserver rc route svgatext
argus dummy ijb nscd rc0.d routed syslog
at firewall inetd ntopd rc1.d rpc usb
axnet gpm init.d pcmcia rc2.d rwhod vmware
boot halt kbd pcnfsd rc3.d serial webmin
boot.d halt.local kerneld postfix rc4.d single wwwoffle
boot.local hylafax lpd powerfail rc5.d skeleton xdm
boot.setup i4l named quota rc6.d smb ypclient
cdb i4l_hardware network quotad rcS.d smbfs

Daemonen

Daemonen (Disk And Execution Monitor) zijn hulpprogramma's die op de achtergrond lopen. Ze hebben niets met duivels (demonen) te maken. Men spreekt ook wel van services of achtergrondprocessen. Het zijn services (diensten) in zoverre dat ze door meerdere gebruikers (lees: programma's) aangeroepen kunnen worden. Voor specifieke taken kunnen daemonen weer andere programma's of daemonen oproepen.

Al snel na het booten van Linux wordt bijv. de inetd (de internet daemon) gestart. Deze zogenaamde Internet Superserver luistert voortdurend naar bepaalde poorten om te zien of er van hun diensten gebruik moet worden gemaakt. In de praktijk vangt de inetd alle verzoeken m.b.t. het internet op en activeert passende daemonen om het verzoek af te handelen. Dit heeft als voordeel dat alleen de voor een bepaalde taak benodigde programma's in het geheugen geladen zijn.

Met ps -ax krijgt u een overzicht van de lopende processen inclusief de daemonen:

sjoerd@visser:~ ps -ax 
PID TTY STAT TIME COMMAND 
1 ? S 0:04 init [2] 
2 ? SW 0:00 [kflushd] 
3 ? SW 0:00 [kupdate] 
4 ? SW 0:00 [kpiod] 
5 ? SW 0:02 [kswapd] 
96 ? S 0:00 /sbin/portmap 

etc etc

Met het volgende commando krijgt u een overzicht van de in uw manual pages gedocumenteerde daemonen.

sjoerd@visser:~ apropos daemon 

Het zijn er bij mij heel veel. Apropos doorzoekt de man pages op een trefwoord en geeft er een korte beschrijving bij. Het resultaat kunt u zien in de tabel.

actived (8) - a daemon to handle nnrpd requests for active file information.;

afpd (8) - AppleTalk Filing Protocol daemon

apmd (8) - Advanced Power Management (APM) BIOS daemon

ax25d (8) - General purpose AX.25, NET/ROM and Rose daemon

bdflush (2) - start, flush, or tune buffer-dirty-flush daemon

bdflush (8) - kernel daemon to flush dirty buffers back to disk.

bounce (8) - Postfix message bounce or defer daemon

cron (8) - daemon to execute scheduled commands (Vixie Cron)

ctlinnd (8) - control the InterNetNews daemon

defer (8) - Postfix message bounce or defer daemon

diald (8) - demand dialing daemon for IP links over phone lines

faxrunqd (8) - daemon to send fax jobs queued by faxspool(1)

fctl (1) - Control a LAM remote file daemon.

fstate (1) - Report information on LAM remote file daemon.

huntd (6) - hunt daemon, back-end for hunt game

ibod (1) - ISDN MPPP bandwidth on demand daemon

idled (8) - Idle terminal and multiple login monitor daemon.

in.xfingerd (8) - Finger to LDAP/X.500 gateway daemon

innd (8) - InterNetNews daemon

ipppd (8) - (ISDN) Point to Point Protocol daemon (Version i2.2.9)

iprofd (8) - Modem-register daemon

ipxd (8) - IPX RIP/SAP daemon program

kattach (2) - Attach/detach a process to/from the local LAM daemon.;

kdetach (2) - Attach/detach a process to/from the local LAM daemon.;

klogd (8) - kernel log daemon.

lam_rfrmfd (2) - Control LAM specific file daemon services.

ldapd (8) - LDAP X.500 Protocol Daemon

lpd (8) - line printer spooler daemon

micod (8) - MICO BOA daemon

mountd (8) - NFS mount daemon

mysql (1) - text-based client for mysqld, a SQL-based relational database daemon;

ndc (8) - name daemon control interface

nfsd (8) - NFS service daemon

nfsservctl (2) - syscall interface to kernel nfs daemon

papd (8) - AppleTalk print server daemon

pms (8) - Personal Mail System daemon for AX.25 and NET/ROM

pppd (8) - Point to Point Protocol daemon

pvm_shmd (1) - PVM shared memory (2) daemon

pvm_start_pvmd (3) - Starts new PVM daemon.

pvmd (1) - PVM daemon

pvmfstartpvmd (3) - Starts new PVM daemon.

routed (8) - network routing daemon

rpc.mountd (8) - NFS mount daemon

rpc.nfsd (8) - NFS service daemon

rpc.yppasswdd (8) - NIS password update daemon

rspfd (8) - Radio Shortest Path amateur radio routing daemon

saned (1) - SANE network daemon

slapd.conf (5) - configuration file for slapd, the stand-alone LDAP daemon;

slapd (8) - Stand-alone LDAP Daemon

slurpd (8) - Standalone LDAP Update Replication Daemon

sshd1 (8) - secure shell daemon

timed (8) - time server daemon

trivial-rewrite (8) - Postfix address rewriting and resolving daemon;

ttylinkd (8) - TTYlink daemon for AX.25, NET/ROM, ROSE and IP.

update (8) - kernel daemon to flush dirty buffers back to disk.

uucico (8) - UUCP file transfer daemon

uuxqt (8) - UUCP execution daemon

vboxd (8) - isdn voice box daemon

xinetd.conf (5) - Extended Internet Services Daemon configuration file;

xinetd (1) - the extended Internet services daemon

xkbevd (1x) - XKB event daemon

xscreensaver-demo (1) - interactively control the background xscreensaver daemon;

ypbind_bsd (8) - "NIS domain binding daemon"

yppasswdd (8) - NIS password update daemon

De korte beschrijvingen geven enig inzicht in de functie. Dit ter orientatie. De afzonderlijke man pages (waarnaar apropos verwijst) vertellen u natuurlijk meer.

Hieronder ga ik nog even in op enige afzonderlijke daemonen.

daemon

Toelichting

atd

Nodig voor commando's die later uitgevoerd worden.

axnet

 

crond

De cron daemon van Vixie Cron (crond) is een achtergrondproces, dat op gezette tijden opdrachten uitvoert. Cron stuurt de output via sendmail naar root.;

gated

De Gateway daemon

getty

Regelt de toegang tot het toetsenbord (nodig voor inloggen).

gpm

Regelt cut and paste verkeer van de muis.

httpd

Daemon voor het verwerken van het HTTP protocol.

in.nntpd

Deamon voor het verwerken van NNTP berichten. Deze wordt door de inetd daemon geactiveed

inetd

De Internet Superserver daemon vangt netwerkverzoeken van buiten open activeert andere daemonen het verzoek af te handelen. Dit heeft als voordeel dat alleen de hoognodige daemonen in het geheugen geladen zijn.

ipppd

ISDN Point to Point Protocol daemon

kerneld

De kernel daemon laadt kernel "modules" (drivers) in het geheugen als ze nodig zijn. Voor versie 2.0 moest u hier modprobe en insmod voor gebruiken.;

kflushd

 

klogd

De kernel log daemon onderschept de berichten van de kernel een slaat ze in bestanden als var/log/messages op.;

kpiod

 

kswapd

 

lpd

De line printing demon (spooeler) regelt de toegang tot de printer.;

md_thread

 

named

De Internet domain name server (name daemon) doet dienst als lokale Domain Name Server (DNS): hij zet host names in IP adressen om. Configuratiebestand: /etc/named.boot.

nscd

De Name service cache daemon die via /etc/nscd.conf word geconfigureerd.

routed

De network routing daemon. De 'routed' daemon actualiseert de routing tabellen van het systeem in overeenstemming met de toestand van het netwerk ("dynamic routing") door te luisteren naar de actieve netwerk poorten.

sendmail

Sendmail regelt het email verkeer. Sendmails configuratie-bestand /etc/sendmail.cf wordt door een makro-editor gegenereerd. Hier is niet voor niets een apart boek over geschreven. Voor de thuisgebruiker is het slimmer de sendmail configuratie aan de distributie over te laten of een alternatief te kiezen als smail of postfix.

smtpd

Simple Mail Transfer Protocol Daemon

syslogd

De systeem log daemon, die boot en systeem berichten naar de directory /var/log/ schrijft.

update

De update daemon verzorgt het legen van de lazy write cache.

Het instellen van de daemonen geschiedt tegenwoordig met configuratietools. Hieronder ziet u er een van Redhat.

deamonsetup.gif


>> Index <<