Leer Linux kennen: de map /etc/init.d

Als u Linux gebruikt, heeft u waarschijnlijk gehoord van de map init.d. Maar wat doet deze map precies? Het doet uiteindelijk één ding, maar het doet dat ene voor je hele systeem, dus init.d is erg belangrijk. De map init.d bevat een aantal start / stop-scripts voor verschillende services op uw systeem. Alles van acpid tot x11-common wordt bestuurd vanuit deze map. Natuurlijk is het niet zo eenvoudig.

Als u naar de map / etc kijkt, vindt u mappen in de vorm rc # .d (waarbij # een getal is voor een specifiek initialisatieniveau - 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 mappen werken de systeemdiensten samen als een geoliede machine. Maar er zijn momenten waarop u een proces netjes moet starten of stoppen zonder de opdrachten kill of killall te gebruiken. Dat is waar de map /etc/init.d van pas komt.

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

Om een ​​van de scripts in init.d handmatig te kunnen beheren, moet je root (of sudo) toegang hebben. Elk script wordt uitgevoerd als een opdracht en de structuur van de opdracht ziet er als volgt uit:

/etc/init.d/command OPTIE

Waar commando het daadwerkelijke uit te voeren commando is en OPTION een van de volgende kan zijn:

  • begin
  • hou op
  • herladen
  • herstarten
  • force-reload

Meestal gebruikt u start, stop of herstart. Dus als u uw netwerk wilt stoppen, kunt u de opdracht geven:

/etc/init.d/netwerken stoppen

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

/etc/init.d/netwerken opnieuw opstarten

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

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

Natuurlijk kunnen er vaker gebruikte scripts in uw map staan ​​- dit hangt af van wat u hebt geïnstalleerd. De bovenstaande lijst is afkomstig van een Ubuntu Server 8.10-installatie, dus een standaard desktop-installatie zou een paar minder netwerk-type scripts hebben.

Maar hoe zit het met /etc/rc.local

Er is een derde optie die ik nogal vaak gebruikte. Deze optie is het /etc/rc.local-script . Dit bestand wordt uitgevoerd nadat alle andere scripts op init-niveau zijn uitgevoerd, dus het is veilig om verschillende opdrachten te plaatsen die u bij het opstarten wilt hebben gegeven. Vaak plaats ik montage-instructies voor dingen als nfs in dit script. Dit is ook een goede plek om 'probleemoplossing'-scripts in te plaatsen. Als ik bijvoorbeeld eenmaal een machine had die om een ​​of andere reden samba leek te willen starten. Zelfs na het controleren of de Samba-daemon was ingesteld om te initialiseren bij het opstarten. Dus in plaats van hier al mijn tijd aan te besteden, plaatste ik gewoon de regel:

/etc/init.d/samba start

in het /etc/rc.local script en Samba werkte als een charme. Uiteindelijk zou ik terugkomen en problemen met dit probleem oplossen.

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 het /etc/init.d systeem (evenals /etc/rc.local ) kunt u er vrijwel zeker van zijn dat uw service zal starten.