Lær Linux at kende: /etc/init.d-biblioteket

Hvis du bruger Linux, har du sandsynligvis hørt om mappen init.d. Men hvad gør nøjagtigt dette bibliotek? Det gør i sidste ende en ting, men det gør den ene ting for hele dit system, så init.d er meget vigtig. Init.d- biblioteket indeholder et antal start / stop-scripts til forskellige tjenester på dit system. Alt fra skarp til x11-fælles styres fra dette bibliotek. Selvfølgelig er det ikke lige så enkelt.

Hvis du kigger på mappen / etc, finder du mapper, der er i formen rc # .d (Hvor # er et tal reflekterer et specifikt initialiseringsniveau - fra 0 til 6). Inden for hver af disse mapper er der en række andre manuskripter, der kontrollerer processer. Disse scripts begynder enten med et "K" eller et "S". Alle "K" scripts køres før "S" scripts. Og afhængigt af hvor scripterne er placeret, vil det afgøre, hvornår scripterne starter. Mellem bibliotekerne fungerer systemtjenesterne som en velsmurt maskine. Men der er tidspunkter, hvor du er nødt til at starte eller stoppe en proces rent og uden at bruge kill eller killall-kommandoerne. Det er her /etc/init.d-biblioteket er praktisk.

Hvis du nu bruger en distribution som Fedora, kan du muligvis finde dette bibliotek i /etc/rc.d/init.d . Uanset placering tjener det samme formål.

For at kontrollere et hvilket som helst af manuskripterne i init.d manuelt, skal du have root (eller sudo) adgang. Hvert script køres som en kommando, og strukturen i kommandoen vil se ud:

/etc/init.d/command OPTION

Hvor kommandoen er den aktuelle kommando, der skal køres, og OPTION kan være en af ​​følgende:

  • Start
  • hold op
  • reload
  • genstart
  • kraft-reload

Oftest bruger du enten start, stop eller genstart. Så hvis du vil stoppe dit netværk, kan du udstede kommandoen:

/etc/init.d/netværksstop

Eller hvis du foretager en ændring af dit netværk og har brug for at genstarte det, kan du gøre det med følgende kommando:

/etc/init.d/networking genstart

Nogle af de mere almindelige init-scripts i dette bibliotek er:

  • netværk
  • samba
  • apache2
  • ftpd
  • sshd
  • Dovecot
  • mysql

Der kan selvfølgelig være flere ofte anvendte scripts i dit bibliotek - det afhænger af, hvad du har installeret. Ovenstående liste blev taget fra en Ubuntu Server 8.10 installation, så en standard desktopinstallation ville have et par mindre scripts af netværkstypen.

Men hvad med /etc/rc.local

Der er en tredje mulighed, som jeg brugte en hel del. Denne mulighed er /etc/rc.local scriptet. Denne fil kører, når alle andre init-niveau-scripts er kørt, så det er sikkert at placere forskellige kommandoer, som du vil have udstedt ved opstart. Mange gange vil jeg placere monteringsvejledning til ting som nfs i dette script. Dette er også et godt sted at placere "fejlfinding" -skripter i. For eksempel havde jeg en gang en maskine, som samba af en eller anden grund ikke så ud til at starte. Selv afer-kontrol for at sikre, at Samba-dæmonen var indstillet til at initialisere ved opstart. Så i stedet for at bruge al min tid på forhånd med dette placerede jeg simpelthen linjen:

/etc/init.d/samba start

i /etc/rc.local scriptet og Samba virkede som en charme. Til sidst kom jeg tilbage og fik problemer med at skyde dette spørgsmål.

Afsluttende tanker

Linux er fleksibel. Linux er så fleksibel, at der næsten uundgåeligt er adskillige måder at løse et enkelt problem på. At starte en systemtjeneste er et sådant problem. Ved hjælp af systemet /etc/init.d (såvel som /etc/rc.local ) kan du stort set være sikker på, at din service starter.