Run Levels

Förr körde i stort sett alla Linuxdatorer System V init (V som i romerska siffran 5).

De flesta Linuxdatorer använder idag systemd istället. Här tar jag dock upp System V och hur det fungerar eftersom det fortfarande finns system som använder det.

Mer information om systemd hittar du här.

En Linuxdator kan befinna sig i olika tillstånd, run levels. Systemet med olika run levels kallas även System V init (uttalas System fem init) eftersom den ursprungligen kommer ur System V-unix från AT&T. Run levels brukar vara definierade enligt följande:

Run Level
0) Halt. Hela datorn är stillastående. Inga program är igång.
1) Single user mode. Endast kärnan och ett kommandoskal finns. Inga andra program är igång.
2) Multi user mode utan NFS. Allt är igång förutom nätverksfilsystemet NFS.
3) Multi user mode med NFS. Allt är igång inklusive nätverksfilsystemet NFS.
4) Odefinierad.
5) Multiuser mode med NFS och grafiskt inloggning.
6) Reboot. Datorn bootar om.

I din distribution kan det skilja något mot ovastående.

När datorn bootar går den normalt till run level 3 eller run level 5. Vilken den ska gå till vi boot definieras i filen /etc/inittab. Se raden:
id:3:initdefault:
Siffran 3 ovan innebär att datorn normalt ska boota till run level 3.

Vilka program som ska stoppas och startas vid en viss runlevel definieras i katalogen för aktuell run level. Katalogerna är:

Filerna i katalogerna har namn på formen K??namn och S??namn, där ?? är ett tvåsiffrigt ordningstal. Filerna körs i nummerordning och om två filer har samma ordningstal körs de samtidigt. Namn är namnet på servertjänsten.

När datorn kommer till en run level börjar den med att köra alla filer som heter K??namn och se till att avsluta dem, döda dem. När det är gjort fortsätter den med alla som heter S??namn och startar dem. Systemet är gjort så för att i en del fall vill man att en del saker ska avslutas först innan någonting startas.

Anledningen till ordningstalen är för att kunna stoppa respektive starta saker i rätt ordning. Till exempel är det lämpligt att stoppa webbservern innan man tar ner nätverket. Likaså är det bra att först starta nätverket före man startar webbservern.

Filerna i katalogerna för de olika run levels är egentligen symboliska länkar, ett annat namn, för/till filerna som ligger i katalogen /etc/rc.d/init.d. En symbolisk länk sätts upp med ln -s fil-att-peka-på länken.

Bilden nedan visar några av länkarna för run level 3:

Bild över katalogstrukturen /etc

För att ta bort att en servertjänst startas eller stoppas vid en specifik run level, ta bort symlänken i katalogen för denna run level med kommandot rm. Exempel. Du vill ta bort webbservern, httpd, från run level 3 så att den inte startas. Gör: rm /etc/rc.d/rc3.d/S85httpd.

Vill du istället att en servertjänst ska startas vid en viss run level, till exempel att sendmail, e-postserver, ska startas efter webbservern i run level 3 gör du:
cd /etc/rc.d/rc3.d
ln -s ../init.d/sendmail S87sendmail

Det blir då:
Bild över katalogstrukturen /etc

Skapar du egna shellscripts som du lägger i /etc/rc.d/init.s måste de vara exekverbara så att de går att köra som vanliga program. Det åstadkoms med:
chmod a+x /etc/rc.d/init.d/programmet

Notera att de flesta Linuxsystem ser ut enligt beskrivningen ovan men ditt Linuxsystem kan skilja något. Katalogerna rc0.d, rc1.d, rc2.d, rc3.d, rc4.d, rc5.d, rc6.d och init.d kan till exempel ligga direkt under /etc istället för under /etc/rc.d. Slackware beter sig helt annorlunda och där får du istället stoppa in rader för tjänsterna som ska startas eller stoppas in i filerna som heter rc.någonting som ligger under /etc/rc.d . Till exempel nätverksinställningarna görs i rc.inet1 och start av nätverksservertjänster görs i rc.inet2 i Slackware.

chkconfig

I bland annat Red Hat-linux (och Fedora) finns programmet chkconfig. chkconfig används för att titta på vilka tjänster som startas respektive stoppas vid olika run levels och för att sätta upp så att servertjänster startas eller stoppas vid de olika run levels.

chkconfig --list
visar för alla run levels och för alla servertjänster vilka som startas respektive stoppas vid de olika run levels. Exempel:

/sbin/chkconfig --list
amd            	0:av	1:av	2:av	3:av	4:av	5:av	6:av
httpd          	0:av	1:av	2:av	3:på	4:av	5:på	6:av
apmd           	0:av	1:av	2:på	3:på	4:på	5:på	6:av
arpwatch       	0:av	1:av	2:av	3:av	4:av	5:av	6:av
atd            	0:av	1:av	2:av	3:på	4:på	5:på	6:av
autofs         	0:av	1:av	2:av	3:av	4:av	5:av	6:av
named          	0:av	1:av	2:av	3:på	4:på	5:på	6:av
bootparamd     	0:av	1:av	2:av	3:av	4:av	5:av	6:av
dhcpd          	0:av	1:av	2:på	3:av	4:av	5:av	6:av
gated          	0:av	1:av	2:av	3:av	4:av	5:av	6:av
gpm            	0:av	1:av	2:på	3:på	4:på	5:på	6:av
network        	0:av	1:av	2:på	3:på	4:på	5:på	6:av
xfs            	0:av	1:av	2:på	3:på	4:på	5:på	6:av

Det går även att titta på en viss servertjänst med: chkconfig --list servertjänsten
Till exempel för webbservern:
chkconfig --list httpd

För att lägga till att en servertjänst startas gör du: chkconfig servertjänsten on
Till exempel för webservern:
chkconfig httpd on

För att stänga av en servertjänst gör du: chkconfig servertjänsten off
Till exempel för webservern:
chkconfig httpd off

Det går också att specificera run levels där de olika run levels skrivs som siffror direkt efter varandra. Exempel, starta webbservern vid run level 3 och 5:
chkconfig --level 35 httpd on





Copyright © 2010-2024 Kjell Enblom.
This document is covered by the GNU Free Documentation License, Version 1.3

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".