Lär känna Linux: Katalogen /etc/init.d

Om du använder Linux har du troligtvis hört talas om init.d- katalogen. Men vad gör katalogen exakt? I slutändan gör det en sak men det gör en sak för hela systemet, så init.d är mycket viktigt. Katalogen init.d innehåller ett antal start / stopp-skript för olika tjänster på ditt system. Allt från acpid till x11-common styrs från den här katalogen. Naturligtvis är det inte precis så enkelt.

Om du tittar på katalogen / etc hittar du kataloger som är i formen rc # .d (där # är ett nummer återspeglar en specifik initialiseringsnivå - från 0 till 6). Inom varje katalog finns ett antal andra skript som styr processer. Dessa skript börjar antingen med ett "K" eller ett "S". Alla "K" -skript körs före "S" -skript. Och beroende på var skripten är belägna avgör när skriptet initieras. Mellan katalogerna fungerar systemtjänsterna som en oljad maskin. Men det finns tillfällen när du behöver starta eller stoppa en process rent och utan att använda kill- eller killall-kommandona. Det är där katalogen /etc/init.d är praktiskt.

Om du nu använder en distribution som Fedora kanske du hittar den här katalogen i /etc/rc.d/init.d . Oavsett plats, tjänar det samma syfte.

För att kontrollera något av skriptna i init.d manuellt måste du ha root (eller sudo) åtkomst. Varje skript kommer att köras som ett kommando och strukturen för kommandot kommer att se ut:

/etc/init.d/command OPTION

Där kommandot är det verkliga kommandot att köra och OPTION kan vara ett av följande:

  • Start
  • sluta
  • ladda om
  • omstart
  • kraft-reload

Oftast använder du antingen start, stopp eller omstart. Så om du vill stoppa ditt nätverk kan du utfärda kommandot:

/etc/init.d/networking stop

Eller om du gör en ändring i ditt nätverk och behöver starta om det, kan du göra det med följande kommando:

/etc/init.d/networking starta om

Några av de vanligare init-skript i den här katalogen är:

  • nätverk
  • samba
  • apache2
  • ftpd
  • sshd
  • dovecot
  • mysql

Naturligtvis kan det finnas mer ofta använda skript i din katalog - det beror på vad du har installerat. Listan ovan är hämtad från en Ubuntu Server 8.10-installation så att en standard desktopinstallation skulle ha några mindre skript av nätverkstyp.

Men hur är det med /etc/rc.local

Det finns ett tredje alternativ som jag brukade använda ganska mycket. Det här alternativet är /etc/rc.local-skriptet . Denna fil körs efter att alla andra skript på initnivå har körts, så det är säkert att lägga till olika kommandon som du vill ha utfärdat vid start. Många gånger kommer jag att placera monteringsinstruktioner för saker som nfs i det här skriptet. Detta är också ett bra ställe att placera "felsökning" -skript i. Till exempel när jag en gång hade en maskin som av någon anledning verkade samba inte vilja starta. Till och med efterkontroll för att se till att Samba-demonet var inställt för att initialisera vid uppstart. Så istället för att spendera all min tid i förväg med detta placerade jag helt enkelt linjen:

/etc/init.d/samba start

i /etc/rc.local-manuset och Samba fungerade som en charm. Så småningom skulle jag komma tillbaka och besvära problemet.

Slutgiltiga tankar

Linux är flexibelt. Linux är så flexibelt att det finns nästan, oundvikligen, många sätt att lösa ett enda problem. Att starta en systemtjänst är ett sådant problem. Med hjälp av systemet /etc/init.d (såväl som /etc/rc.local ) kan du vara säker på att din tjänst kommer att starta.