Tjenester på Linux starter opp så snart systemet starter eller starter på nytt. Slik kan du opprette en automatisk startende systemd-tjeneste på din Linux-PC.

systemd er service manager for mange kjente Linux-distribusjoner. En tjeneste er en enhet av et program som vanligvis kjører i bakgrunnen. Tjenester starter av natur automatisk så snart systemet starter opp og kan kjøres uten tilsyn.

Hvis du trenger å opprette en autostartende oppgave eller et program som kjøres hver gang du starter eller starter systemet på nytt, kan du vurdere å opprette en ny tjeneste. La oss lære hvordan du lager en ny, tilpasset systemd tjeneste på Linux.

Trinn 1: Opprette tjenestefilen

Det er noen få trinn som kreves for å opprette en ny systemd-tjenestefil. Den første av dem er å lage enhetsfilen for tjenesten. Før du oppretter en tjenestefil, må du forstå strukturen.

La oss studere tjenestefilen ved å hente en ekte, fungerende tjenestefil fra Linux-systemet. Nedenfor kan du se tjenestefilen for vmtools daemon-tjenesten.

instagram viewer

Denne spesielle tjenesten er kanskje ikke til stede på systemet ditt med mindre du også kjører Linux på VMware med VMware-verktøy installert. Den aktuelle tjenesten er ikke viktig fordi alle tjenester, eller rettere sagt, tjenesteenhetsfiler, har samme grunnstruktur med noen tilpasninger etter behov.

Alle systemd-tjenestefiler må ha tre seksjoner: [Service], [Enhet], og [Installere], og noen få parametere under hver seksjon. Her er hva hver del inneholder og hvorfor de er viktige:

1. Enhet

De Enhet delen inneholder viktige metadata som en beskrivelse og avhengigheter av tjenesten. Den har tre parametere: Beskrivelse, Før, og Etter. Som det samme antyder, er Beskrivelse parameter gir en viss kontekst for tjenesten og hva den gjør.

De Før og Etter parametere definerer betingelsene som skal oppfylles for at tjenesten skal utføres. Hvis du for eksempel starter en webservertjeneste, vil du at den skal starte først etter at nettverkstjenesten er tilkoblet. Så du ville angi verdien av Etter parameter til nettverkstjenesten.

2. Service

De Service delen inneholder to obligatoriske parametere: ExecStart, Type, og noen få andre valgfrie parametere som ExecReload, og mer.

ExecStart definerer kommandoen som skal utføres når tjenesten starter, mens Type parameter bestemmer typen prosess som skal gyte.

3. Installere

Denne delen og dens data kalles opp når du aktiverer eller deaktiverer tjenesten med systemctl-kommandoen.

Den har et par parametere. En av de vanlige og nødvendige er Etterlyst Av. De Etterlyst Av parameter definerer målenhetene som skal starte når tjenesten er aktivert. Standardverdien er multi-user.target.

Parametrene nevnt her er ikke de eneste parameterne du kan angi i en enhetsfil. Du kan få hele listen over parametere fra offisiell systemd.exec-dokumentasjon eller ved å skrive inn mann systemd.exec i en terminal.

En systemd-tjenesteenhetsfil slutter alltid med en ".service"-utvidelse og må lagres i /etc/systemd/system/ katalog. Opprett tjenestefilen ved å bruke berøringskommandoen med forhøyede privilegier ved å sette den foran med sudo kommando:

sudo touch /etc/systemd/system/.service 

Nå som du har opprettet tjenestefilen, la oss begynne å fylle den med den nødvendige syntaksen for å gjøre tjenesten gyldig og fungerende.

Trinn 2: Konfigurering av tjenestefilen

For demonstrasjon vil du lage en eksempeltjeneste som kjører Nmap for å skanne portene på maskinen din og lagre utdataene i en fil hvert trettiende sekund. For å oppnå denne oppgaven kan du strukturere tjenesteenhetsfilen slik:

[Enhet]
Description=Demonstrasjon av tilpasset nmap-tjeneste.
Etter=nettverk.mål

[Service]
Type=enkel
Bruker=root
ExecStart=/usr/bin/nmap -sS -O -oN /home//results.txt lokal vert
Start på nytt=alltid
RestartSec=30

[Installere]
WantedBy=multi-user.target

Selv om parameterne nevnt her har blitt forklart tidligere, la oss gå over hvordan de påvirker vår nyopprettede tjeneste og også utforske nye introdusert i denne enheten: Omstart, RestartSec, og Bruker.

Her er hva parametrene i hver seksjon betyr:

  • Beskrivelse: Menneskelesbar tekst for å beskrive funksjonaliteten til tjenesten.
  • After=network.target: Dikterer til systemd som denne tjenesten er avhengig av nettverk.mål og bør først starte etter nettverk.mål tjenesten er startet. Noter det Etter brukes ikke til å etablere noe direkte avhengighetsforhold, det fungerer bare som en trigger.
  • Type=enkel: Det finnes flere tjenestetyper. Tjenesten i denne demonstrasjonen er imidlertid en vanlig prosess, og derfor erklærer vi det slik. Du kan finne alle de forskjellige verdiene for dette på den offisielle dokumentasjonssiden som er koblet til tidligere.
  • Start på nytt=alltid: Dette betyr at når tjenesten avsluttes, bør den alltid starte på nytt.
  • RestartSec=30: Dette setter intervallet mellom hver start av tjenesten til 30 sekunder.
  • Bruker=root: Dette definerer at tjenesten skal kjøres som rotbruker. I dette tilfellet er dette et må-gjøre-trinn siden Nmap ikke vil kunne kjøre uten root-privilegier.
  • ExecStart: Dette direktivet inneholder den absolutte banen til programmet som skal kjøres sammen med alle nødvendige flagg eller argumenter som er nødvendige for at programmet skal fungere skikkelig.
  • WantedBy=multi-user.target: Denne parameteren i en tjenestefil spesifiserer hvilket mål som skal inkludere eller "ønske" tjenesten. Når en tjeneste er inkludert i et mål, betyr det at tjenesten skal starte når systemet når det målet under oppstartsprosessen. I dette tilfellet bør tjenesten starte når systemet går inn i flerbrukermodus. Flerbrukermodusen er en tilstand der systemet er fullstendig oppstartet og lar flere brukere logge på og bruke systemet.

Trinn 3: Aktivering og start av tjenesten

Nå som du har opprettet enhetsfilen, er de eneste trinnene som gjenstår for å aktivere tjenesten å aktivere og kjøre den. Du kan aktivere og starte tjenesten ved å bruke systemctl-kommandoen.

Slik bruker du systemctl for å aktivere, starte og sjekke statusen til tjenesten din:

sudo systemctl aktiver .service
sudo systemctl start .service
sudo systemctl-status .service

Nå skal den tilpassede tjenesten din være i gang! I dette tilfellet bør du se en Nmap-skanning som kjører hvert trettiende sekund og utdataene blir lagret i results.txt filen i hjemmekatalogen.

Det er enkelt å sette opp en systemd tjeneste på Linux!

Selv om å sette opp en tilpasset tjeneste fra bunnen av kan virke skremmende i begynnelsen, er det en ganske enkel måte å sette opp en selvutførende, uovervåket prosess for å utføre repeterende oppgaver for deg og øke din produktivitet.

I demotjenesten har vi knapt skrapet på overflaten av hvordan du kan konfigurere og sette opp en tjeneste. For å lære alt om hvordan du kan tilpasse tjenesten din, anbefales det at du går gjennom den offisielle dokumentasjonen som er koblet til i notatet.

Hvis å sette opp og vedlikeholde en tjeneste føles for mye av en oppgave for deg, bør du vurdere å sjekke ut en alternativ måte å automatisere repeterende oppgaver på Linux.