Maak kennis met Linux: de /etc/init.d Directory

Probeer Ons Instrument Voor Het Oplossen Van Problemen

Als je Linux gebruikt, heb je waarschijnlijk wel eens gehoord van het init.d directory. Maar wat doet deze directory precies? Het doet uiteindelijk één ding, maar het doet dat ene ding voor uw hele systeem, dus init.d is zeer belangrijk. De init.d directory bevat een aantal start / stop-scripts voor verschillende services op uw systeem. Alles van zuur naar x11-gemeenschappelijk wordt bestuurd vanuit deze directory. Het is natuurlijk niet zo eenvoudig.

Als je kijkt naar de /enzovoort directory vindt u directories die in het formulier staan rc # .d (Waar # een getal is, geeft een specifiek initialisatieniveau weer - van 0 tot 6). Binnen elk van deze mappen bevindt zich een aantal andere scripts die processen besturen. Deze scripts beginnen met een 'K' of een 'S'. Alle 'K'-scripts worden uitgevoerd vóór' S'-scripts. En afhankelijk van waar de scripts zich bevinden, wordt bepaald wanneer de scripts worden gestart. Tussen de directories werken de systeemservices als een geoliede machine samen. Maar er zijn momenten waarop u een proces netjes moet starten of stoppen zonder de kill- of killall-opdrachten te gebruiken. Dat is waar de /etc/init.d directory is handig.

Als je een distributie zoals Fedora gebruikt, vind je deze map misschien in /etc/rc.d/init.d . Ongeacht de locatie dient het hetzelfde doel.

Om een ​​van de scripts in init.d handmatig moet u root (of sudo) toegang hebben. Elk script wordt als een commando uitgevoerd en de structuur van het commando ziet er als volgt uit:

/etc/init.d/command OPTION

Waar opdracht is het eigenlijke commando om en uit te voeren KEUZE kan een van de volgende zijn:

  • begin
  • hou op
  • herladen
  • herstarten
  • gedwongen herladen

Meestal zult u beide gebruiken start Stop, of herstarten. Dus als u uw netwerk wilt stoppen, kunt u het volgende commando geven:

/etc/init.d/networking stop

Of als u een wijziging aanbrengt in uw netwerk en het opnieuw moet opstarten, kunt u dit doen met de volgende opdracht:

/etc/init.d/networking herstart

Enkele van de meest voorkomende init-scripts in deze directory zijn:

  • netwerken
  • samba
  • apache2
  • ftpd
  • sshd
  • duiventil
  • mysql

Natuurlijk kunnen er vaker gebruikte scripts in uw directory staan ​​- het hangt ervan af wat u heeft geïnstalleerd. De bovenstaande lijst is afkomstig van een Ubuntu Server 8.10-installatie, dus een standaard desktopinstallatie zou een paar minder netwerktype-scripts hebben.

Maar hoe zit het met /etc/rc.local

Er is een derde optie die ik vroeger nogal wat gebruikte. Deze optie is de /etc/rc.local script. Dit bestand wordt uitgevoerd nadat alle andere scripts op init-niveau zijn uitgevoerd, dus het is veilig om verschillende opdrachten in te voeren die u bij het opstarten wilt hebben. Vaak zal ik montage-instructies voor zaken als nfs in dit script plaatsen. Dit is ook een goede plek om scripts voor het oplossen van problemen te plaatsen. Ik had bijvoorbeeld eens een machine die om de een of andere reden samba niet leek te willen starten. Zelfs na het controleren of de Samba-daemon was ingesteld om te initialiseren bij het opstarten. Dus in plaats van al mijn tijd hieraan vooraf te besteden, plaatste ik eenvoudig de regel:

/etc/init.d/samba start

in de /etc/rc.local script en Samba werkten als een zonnetje. Uiteindelijk zou ik terugkomen om dit probleem op te lossen.

Laatste gedachten

Linux is flexibel. Linux is zo flexibel dat er bijna, onvermijdelijk, talloze manieren zijn om een ​​enkel probleem op te lossen. Het starten van een systeemservice is zo'n probleem. Met behulp van de /etc/init.d systeem (evenals /etc/rc.local ) kunt u er vrijwel zeker van zijn dat uw service zal starten.