Lär känna Linux: Katalogen /etc/init.d
- Kategori: Linux
Om du använder Linux har du troligtvis hört talas om det 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 väldigt viktigt. De init.d katalogen 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å /etc katalog hittar du kataloger som finns i formuläret rc # .D (Nä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 /etc/init.d katalogen ä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 skripten 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
Var kommando är det verkliga kommandot att köra och ALTERNATIV kan vara ett av följande:
- Start
- sluta
- ladda om
- omstart
- kraft-reload
Oftast använder du antingen börja, stoppa, 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 av 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ätverkande
- 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. Detta alternativ är /etc/rc.local manus. 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öknings' 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-demonen var inställd 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 manus 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 /etc/init.d system (liksom /etc/rc.local ) Du kan ganska mycket vara säker på att din tjänst kommer att starta.