Hvordan kjøre skript på oppstart i Debian Top 10

Hvordan kjøre skript på oppstart i Debian Top 10
Denne opplæringen forklarer hvordan du kjører skript eller tjenester ved oppstart eller oppstart i Debian 11 og baserte Linux -distribusjoner.

For å legge til tjenester og skript ved oppstart på Debian 11, må du opprette SystemD -enheter. Denne opplæringen fokuserer på SystemD -enheter.

Hva er en SystemD -enhet?

SystemD -enheter er konfigurasjonsfiler som inneholder informasjon for riktig styring eller utførelse av visse systemfiler. SystemD-enheter kan brukes til å administrere tjenester, stikkontakter, enheter, monteringspunkter, automotpunkter, byttefiler eller partisjoner, et oppstartsmål, en sett filsystemsti, tidtakere kontrollert og overvåket av SystemD, en ressursstyringsskive eller en gruppe av eksternt opprettede prosesser.

Systemd -enheter er lokalisert under katalogen /etc/systemd/system. Ethvert skript du vil kjøre på oppstart ved hjelp av SystemD -enheter, må spesifiseres i en fil (enhet) under denne katalogen.
En rask visning ved hjelp av LS -kommandoen vil vise oss de eksisterende SystemD -enhetene i systemet vårt.

LS/etc/Systemd/System

En av filene som ikke var inkludert i skjermdumpen ovenfor er tomcat.service hvis innhold virker som følgende bilde.

Merk: Følgende informasjon er at du skal bli kjent med enhetskonfigurasjonsfiler. Ikke bekymre deg, enheten du oppretter for å kjøre skriptet ditt vil være enklere.

Hvor [enheten] direktiver:

Beskrivelse: Dette direktivet lar deg legge til en beskrivelse for en enhet, her kan du angi enhetsnavnet for at det skal identifiseres.

Ønsker: Her kan du spesifisere enhetsavhengighetene. Merk at det er forskjellige direktiver for dette lignende formålet. For eksempel direktivet Krever brukes til å spesifisere strenge avhengigheter, uten hvilken enheten ikke kan fungere. I motsetning til krever, brukes ønsker til å spesifisere avhengigheter uten at enheten kan fortsette å jobbe.

Etter: Den nåværende enheten starter etter enheten som er spesifisert i dette direktivet.

[Service] Seksjonsdirektiver:

Type: I forrige eksempel indikerer gaffel at tjenesten skal drepes mens du holder barneprosesser som må tilordnes en PID.

Miljø: Her kan du spesifisere enhetsmiljøvariablene.

Execstart: Dette direktivet lar deg spesifisere banen og kommandoene du vil utføre.

Execstop: Du kan spesifisere kommandoen som brukes til å stoppe enheten.

SuccessExitStatus: Dette direktivet lar deg spesifisere exit -status og signaler.

Bruker: Du kan spesifisere brukerens eier av enheten.

Gruppe: Du kan spesifisere gruppeeieren av enheten.

Umask: Du kan spesifisere brukermasken.

Restartsek: Hvis enheten starter på nytt automatisk, kan du spesifisere tiden for å vente på å prøve på nytt på nytt.

Omstart: Du kan definere for SystemD når enheten skal startes på nytt. De tilgjengelige alternativene er alltid, på-failure, on-abort, on-access, on-watchdog og on-abnormal.

Direktivet [installasjon] i eksemplet over er ønsket av.

Wantedby: Dette direktivet lar deg definere enheten som avhengighet; det ligner på Ønsker Direktiv, men for å spesifisere om den nåværende enheten regnes som en avhengighet av en annen enhet.

Andre vanlige direktiver i [Enhet] -delen som ikke var inkludert i forrige skjermbilde:

Krever: I dette direktivet kan du spesifisere avhengigheter for å forhindre oppstartssvikt. I motsetning til Ønsker Direktiv, hvis en avhengighet spesifisert med direktivet krever ikke oppfylt, fungerer ikke enheten.

I [Service] -delen:

Pidfile: Gaffeldirektivet krever PIDFile -direktivet, som inneholder veien til filen PID for barneprosessen for SystemD å identifisere det.

Start LimitInterval: indikerer at enheten har 60 sekunder for 10 forsøk på å starte på nytt ved feil.

StartlimitBurst: Dette direktivet indikerer forsøksgrensen, i forrige eksempel, 10 forsøk på 60 sekunder.

For ytterligere informasjon om SystemD -enheter kan du lese:
https: // Manpages.Debian.org/jessie/systemd/systemd.enhet.5.no.html.

Opprette en SystemD -enhet for å kjøre et skript på Boot på Debian 11

Å kjøre et skript ved oppstart kan være enklere og inneholder mindre konfigurasjon enn tomcat.service Fil tidligere brukt for å vise enhetens vanlige innhold.

Som tidligere sagt, filene (enhetene) som inneholder informasjonen om skript som kjører på oppstart, er lokalisert i katalogen /etc/systemd/system. For å definere et skript som skal kjøres på Boot, må du opprette en ny enhet for dette skriptet. Å lage en enhet under /etc/systemd/system, Du kan bruke Nano som vist i eksemplet nedenfor, der jeg lager en enhet som heter manus.service, Du kan navngi det når du anser som praktisk å identifisere skriptet ditt.

sudo nano/etc/systemd/system/script.service

Innholdet i enheten for skriptet ditt vil være enklere enn tomcat.service brukt som eksempel tidligere.

Kopier og lim inn følgende kode i filen du opprettet under /etc/systemd/system.

Merk: Erstatte med skriptnavnet ditt og Med veien til skriptet ditt.

[Enhet]
Beskrivelse = Skriptnavnet ditt her
Etter = standard.mål
[Service]
ExecStart =/sti/to/script.sh
[Installere]
WantedBy = standard.mål

Etter å ha kopiert innholdet i filen under /etc/systemd/system/, Du må aktivere den ved å bruke SystemCTL -kommandoen som vist nedenfor. Erstatte med riktig navn du er tildelt enheten.

Nå er manuset ditt klart til å kjøre ved oppstart i Debian 11.

Konklusjon

Som du kan se, er det ganske enkelt å kjøre skript på Boot i Debian 11 ved hjelp av SystemD. Ethvert Linux -brukernivå kan få denne oppgaven gjort ved bare å lage en enkel fil i enhetskatalogen. Linux tilbyr selvfølgelig flere metoder for å kjøre skript ved oppstart som ikke ble beskrevet i denne opplæringen som CRON. Enhver Linux -bruker bør vite hvordan du finner SystemD -enheter for å kjøre tjenester eller nødvendige skript ved oppstart. Både SystemD -enheter og CRON er aksepterte metoder, mens RC.lokal eller init.D -skript er foreldet.

Takk for at du leste denne opplæringen som forklarer hvordan du kjører skript på oppstart ved hjelp av SystemD i Debian 11. Fortsett å følge oss for flere Linux -tips og opplæringsprogrammer.