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:
- 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.
- 1) Single user mode. Endast kärnan och ett kommandoskal finns. Inga andra program är igång.
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:
- /etc/rc.d/rc0.d för run level 0
- /etc/rc.d/rc1.d för run level 1
- /etc/rc.d/rc2.d för run level 2
- /etc/rc.d/rc3.d för run level 3
- /etc/rc.d/rc4.d för run level 4
- /etc/rc.d/rc5.d för run level 5
- /etc/rc.d/rc6.d för run level 6
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:
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å:
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".