Skip to content

Hoe het ‘init’-commando in Linux te gebruiken

23 de juli de 2021
GettyImages 115810256 2fdee9c7ea09425eaa3417fab8aec4a2

In het is de ouder van alle Linux-processen. Het is het eerste proces dat wordt gestart wanneer een computer opstart en het loopt totdat het systeem wordt afgesloten. Het is de voorloper van alle andere processen. Zijn primaire rol is om processen te creëren op basis van een script dat in het bestand is opgeslagen /etc/inittab. Dit bestand slaat meestal vermeldingen op die ervoor zorgen dat In het om gettys op elke regel te spawnen, waarop systeemgebruikers kunnen inloggen. Het bestuurt ook autonome processen die vereist zijn door een bepaald systeem.

Runlevels

EEN runlevel is een softwareconfiguratie van het systeem waarmee alleen een geselecteerde groep processen kan worden uitgevoerd. De processen voortgebracht door In het voor elk van deze runlevels zijn gedefinieerd in het /etc/inittab-bestand. In het ondersteunt acht runlevels: 0 door 6 en S of zo. Het runlevel verandert wanneer een bevoorrechte gebruiker wordt uitgevoerd Telinit, die de juiste signalen stuurt naar: In het, die het vertelt naar welk runlevel het moet worden gewijzigd. Runlevels 0, 1 en 6 zijn gereserveerd. Runlevel 0 stopt het systeem, runlevel 6 herstart het systeem en runlevel 1 dwingt het systeem in single-user modus. Runlevel S is niet bedoeld om rechtstreeks te worden gebruikt, maar in plaats daarvan door de scripts die worden uitgevoerd wanneer runlevel 1 start. Runlevels 7 tot en met 9 zijn geldig maar niet goed gedocumenteerd omdat conventionele Unix-varianten ze niet gebruiken. Runlevels S en s zijn hetzelfde.

Opstarten

Na In het wordt uitgevoerd als de laatste stap van de opstartvolgorde van de kernel, het zoekt naar het bestand /etc/inittab om te zien of er een invoer is van het type initdefault. Het initdefault-item bepaalt het initiële runlevel van het systeem. Als er geen dergelijke invoer is (of helemaal geen /etc/inittab), moet een runlevel worden ingevoerd op de systeemconsole. Runlevel S of s brengt het systeem naar de modus voor één gebruiker en vereist geen /etc/inittab-bestand. In de modus voor één gebruiker wordt een rootshell geopend op /dev/console. Wanneer u naar de modus voor één gebruiker gaat, in het leest de ioctl-statussen van de console uit /etc/ioctl.save. Als dit bestand niet bestaat, in het initialiseert de lijn op 9600 baud en met CLOCAL-instellingen. Wanneer in het de modus voor één gebruiker verlaat, slaat het de ioctl-instellingen van de console op in dit bestand zodat het deze opnieuw kan gebruiken voor de volgende sessie voor één gebruiker. Wanneer u voor de eerste keer een modus voor meerdere gebruikers opent, In het voert de boot- en bootwait-items uit om bestandssystemen te koppelen voordat gebruikers inloggen. Vervolgens komen alle items overeen met het runlevel-proces. Bij het starten van een nieuw proces, In het controleert eerst of het bestand /etc/initscript bestaat. Als dit het geval is, gebruikt het dit script om het proces te starten. Elke keer dat een kind stopt, In het registreert het feit en de reden waarom het is overleden in /var/run/utmp en/var/log/wtmp, op voorwaarde dat deze bestanden bestaan.

Runlevels wijzigen

Telinit helpscherm

Nadat het alle gespecificeerde processen heeft voortgebracht, In het wacht tot een van zijn onderliggende processen sterft, een stroomstoringssignaal, of totdat Telinit het signaal geeft om het runlevel van het systeem te wijzigen. Wanneer een van deze drie voorwaarden optreedt, wordt het bestand /etc/inittab opnieuw onderzocht. Nieuwe items kunnen op elk moment aan dit bestand worden toegevoegd. Echter, in het wacht nog steeds op een van de bovenstaande drie voorwaarden. Om een ​​onmiddellijke reactie te geven, Telinit Q commando wordt wakker In het om het bestand /etc/inittab opnieuw te bekijken. Als In het zich niet in de modus voor één gebruiker bevindt en een stroomstoringssignaal ontvangt, leest het het bestand /etc/powerstatus. Het start dan een commando op basis van de inhoud van dit bestand:

  • F(AIL): Stroom valt uit, UPS levert stroom. Voer de . uit powerwait en stroomstoring inzendingen.
  • O(K): De stroom is hersteld, voer de powerokwait inzendingen.
  • L(OW): De stroom valt uit en de UPS heeft een bijna lege batterij. Voer de . uit stroomstoring inzendingen.

Als /etc/powerstatus niet bestaat of iets anders bevat dan de letters F, O of L, In het gedraagt ​​zich alsof het de letter F leest. Het gebruik van SIGPWR en /etc/powerstatus wordt nu afgeraden. Gebruik het /dev/initctl-besturingskanaal in moderne Linux-distributies. Wanneer In het wordt gevraagd om het runlevel te wijzigen, stuurt het het waarschuwingssignaal SIGTERM naar alle processen die niet gedefinieerd zijn in het nieuwe runlevel. Vervolgens wacht het vijf seconden voordat het deze processen geforceerd beëindigt met behulp van het SIGKILL-signaal. In het gaat ervan uit dat al deze processen en hun nakomelingen in dezelfde procesgroep blijven die: In het oorspronkelijk voor hen gemaakt. Als een proces zijn procesgroeprelatie wijzigt, ontvangt het deze signalen niet. Dergelijke processen moeten afzonderlijk worden beëindigd.

Telinit

Telinit is gekoppeld aan /sbin/init. Er is een argument van één teken nodig en signalen In het om de juiste actie uit te voeren. De volgende argumenten dienen als richtlijnen om: Telinit:

  • 0, 1, 2, 3, 4, 5 of 6: Schakel over naar het gespecificeerde run-niveau.
  • a, b, c: Verwerk alleen die /etc/inittab-bestandsvermeldingen met runlevel a, b of c.
  • Vraag of q: Onderzoek het bestand /etc/inittab opnieuw.
  • S of zo: overschakelen naar modus voor één gebruiker. Soms wordt de modus voor één gebruiker genoemd herstelmodus omdat het vaak wordt gebruikt om noodsysteemreparaties uit te voeren.
  • u of jij: Voer zichzelf opnieuw uit (behoud van de staat). Er vindt geen heronderzoek van het /etc/inittab-bestand plaats. Runlevel moet S, s, 1, 2, 3, 4 of 5 zijn; anders wordt het verzoek stilzwijgend genegeerd.

Telinit kan ook vertellen In het hoe lang het moet wachten tussen het verzenden van de SIGTERM- en SIGKILL-signalen. De standaardwaarde is vijf seconden, maar deze waarde kan worden gewijzigd met de -t sec keuze.

Telinit kan alleen worden aangeroepen door gebruikers met de juiste rechten. De In het binaire controles als dat zo is In het of Telinit door naar de proces-ID te kijken. De echte In het’s proces-ID is altijd 1. Hieruit volgt dat in plaats van aan te roepen Telinit, een persoon kan gebruiken In het als snelkoppeling.