De Engelse versie van dit artikel is van: http://www.ghacks.net/2009/04/04/get-to-know-linux-the-etcinitd-directory/
1. Over /etc/init.d Als je ooit een Linux-systeem hebt gebruikt, dan heb je wel eens gehoord van de init.d-map. Waar is deze catalogus precies voor? Het doet uiteindelijk maar één ding, maar het is geen triviale zaak, het wordt voor het hele systeem gedaan, dus het is heel belangrijk. De init.d-directory bevat veel start- en stopscripts voor verschillende diensten van het systeem. Hij bestuurt alles van acpid tot x11-common. Natuurlijk is init.d verre van zo simpel. (Opmerking van de vertaler: ACPID is een nieuwe energiebeheerstandaard voor Linux-besturingssystemen; X11 wordt ook wel het X Window-systeem genoemd, en het X-Window-systeem (X11 of X) is een venstersysteem met bitmap-weergave. Het is een standaard toolkit en protocol voor het bouwen van grafische gebruikersinterfaces op Unix en Unix-achtige besturingssystemen, evenals OpenVMS, en kan worden gebruikt voor bijna alle moderne besturingssystemen. Als je naar de /etc-map kijkt, vind je veel mappen die bestaan in de vorm van rc#.d (waarbij # een gespecificeerd initialisatieniveau vertegenwoordigt, het bereik is 0~6). Onder deze directories zijn er veel scripts die het proces regelen. Deze scripts beginnen ofwel met een "K" of een "S". Scripts die met K beginnen, lopen vóór scripts die met S beginnen. Waar deze scripts worden geplaatst, bepaalt wanneer ze beginnen te draaien. Tussen deze mappen werken systeemservices samen als een gezonde machine. Soms wil je echter een proces schoon starten of doden zonder de kill- of killall-commando's te gebruiken. Daar komt /etc/init.d goed van pas! Als je een Fedora-systeem gebruikt, kun je deze map vinden: /etc/rc.d/init.d. Eigenlijk doet het hetzelfde, waar je init.d ook plaatst. Om scripts in de init.d-map te kunnen gebruiken, heb je root- of sudo-rechten nodig. Elk script wordt uitgevoerd als een commando, dat ongeveer als volgt is opgebouwd: /etc/init.d/commando-optie Comand is het daadwerkelijke commando dat wordt uitgevoerd, en de opties kunnen als volgt zijn: Start Stop Herladen Herstart Force-herladen In de meeste gevallen gebruik je de start-, stop- en herstartopties. Als je bijvoorbeeld het netwerk wilt uitschakelen, kun je een commando als volgt gebruiken:
/etc/init.d/networking stop Een ander voorbeeld is dat je je netwerkinstellingen verandert en je netwerk opnieuw moet opstarten. Je kunt commando's gebruiken zoals deze: /etc/init.d/networking herstart De meest gebruikte initialisatiescripts in de init.d-map zijn:
Netwerken Samba Apache2 FTPD sshd Duivenkamp MySQL Natuurlijk kun je ook andere, meer gebruikte scripts hebben, afhankelijk van welk Linux-besturingssysteem je hebt geïnstalleerd. 2. Over /etc/rc.local rc.local is ook een script dat ik veel gebruik. Het script wordt uitgevoerd nadat het systeeminitialisatie-niveau script is uitgevoerd, dus het is veilig om het script toe te voegen dat je wilt uitvoeren nadat het systeem is opgestart. Een veelvoorkomend geval is dat je er een NFS mount/mount-script aan kunt toevoegen. Je kunt ook enkele scriptcommando's toevoegen voor het debuggen binnenin. Ik ben bijvoorbeeld deze situatie tegengekomen waarbij de samba-service altijd niet goed functioneert, en de inspectie laat zien dat samba tijdens het opstarten van het systeem gestart en uitgevoerd had moeten worden, dat wil zeggen, de samba-daemonconfiguratie zorgt ervoor dat deze functie correct wordt uitgevoerd. In dit geval besteed ik meestal niet veel tijd aan het zoeken waarom, ik hoef alleen deze regel toe te voegen aan het /etc/rc.local-script: /etc/init.d/samba start Op deze manier werd het probleem van de SAMBA-service-uitzondering met succes opgelost.
3. Samenvatting Linux is flexibel. Door de flexibiliteit kunnen we altijd veel verschillende manieren vinden om hetzelfde probleem op te lossen. Het voorbeeld van het starten van een systeemdienst is een goed voorbeeld. Met het script in de directory /etc/init.d, gecombineerd met de krachtige tool /etc/rc.local, kun je er zeker van zijn dat je dienst vlekkeloos draait.
|