Tjänster på Linux startar så snart ditt system startar eller startas om. Så här kan du skapa en automatisk startande systemd-tjänst på din Linux-dator.

systemd är tjänstehanteraren för många välkända Linux-distributioner. En tjänst är en enhet i ett program som vanligtvis körs i bakgrunden. Tjänster, av naturen, startar automatiskt så snart systemet startar upp och kan köras utan uppsikt.

Om du behöver skapa en automatisk startuppgift eller ett program som körs varje gång du startar eller startar om ditt system, kan du överväga att skapa en ny tjänst. Låt oss lära oss hur man skapar en ny, anpassad systemtjänst på Linux.

Steg 1: Skapa servicefilen

Det krävs några steg för att skapa en ny systemd-tjänstfil. Den första av dem är att skapa enhetsfilen för tjänsten. Innan du skapar en tjänstfil måste du förstå dess struktur.

Låt oss studera servicefilen genom att hämta en riktig, fungerande servicefil från ditt Linux-system. Nedan kan du se tjänstefilen för vmtools-demontjänsten.

Denna speciella tjänst kanske inte finns på ditt system om du inte också kör Linux på VMware med VMware-verktyg installerade. Tjänsten i fråga är inte viktig eftersom alla tjänster, eller snarare tjänstenhetsfiler, har samma basstruktur med vissa anpassningar som krävs.

instagram viewer

Alla systemd servicefiler måste ha tre sektioner: [Service], [Enhet], och [Installera], och några parametrar under varje avsnitt. Här är vad varje avsnitt innehåller och varför de är viktiga:

1. Enhet

De Enhet avsnittet innehåller viktig metadata som en beskrivning och beroenden av tjänsten. Den har tre parametrar: Beskrivning, Innan, och Efter. Som samma antyder, den Beskrivning parameter ger ett visst sammanhang för tjänsten och vad den gör.

De Innan och Efter parametrar definierar villkoren som ska uppfyllas för att tjänsten ska utföras. Om du till exempel startar en webbservertjänst vill du att den ska starta först efter att nätverkstjänsten är online. Så du skulle ställa in värdet på Efter parameter till nätverkstjänsten.

2. Service

De Service avsnittet innehåller två obligatoriska parametrar: ExecStart, Typ, och några andra valfria parametrar som ExecReload, och mer.

ExecStart definierar kommandot som ska köras när tjänsten startar medan Typ parametern bestämmer vilken typ av process som ska skapas.

3. Installera

Denna sektion och dess data anropas närhelst du aktiverar eller inaktiverar tjänsten med kommandot systemctl.

Den har ett par parametrar. En av de vanliga och nödvändiga är EfterlystAv. De EfterlystAv parametern definierar målenheterna som ska starta när tjänsten är aktiverad. Standardvärdet är multi-user.target.

Parametrarna som nämns här är inte de enda parametrarna du kan ställa in i en enhetsfil. Du kan få hela listan över parametrar från officiell systemd.exec-dokumentation eller genom att skriva in man systemd.exec i en terminal.

En systemd serviceenhetsfil slutar alltid med en ".service"-tillägget och måste lagras i /etc/systemd/system/ katalog. Skapa tjänstefilen med pekkommandot med förhöjda privilegier genom att prefixet det med sudo kommando:

sudo touch /etc/systemd/system/.service 

Nu när du har skapat tjänstefilen, låt oss börja fylla den med nödvändig syntax för att göra tjänsten giltig och fungerande.

Steg 2: Konfigurera servicefilen

För demonstration kommer du att skapa en exempeltjänst som körs Nmap för att skanna portarna på din maskin och lagra utdata i en fil var trettionde sekund. För att uppnå den här uppgiften, så här strukturerar du serviceenhetsfilen:

[Enhet]
Description=Demonstration av anpassad nmap-tjänst.
After=network.target

[Service]
Typ=enkel
User=root
ExecStart=/usr/bin/nmap -sS -O -oN /home//results.txt localhost
Starta om=alltid
RestartSec=30

[Installera]
WantedBy=multi-user.target

Även om parametrarna som nämns här har förklarats tidigare, låt oss gå igenom hur de påverkar vår nyskapade tjänst och även utforska nya som introduceras i den här enheten: Omstart, Starta omSek, och Användare.

Här är vad parametrarna i varje avsnitt betyder:

  • Beskrivning: Människoläsbar text för att beskriva tjänstens funktionalitet.
  • After=network.target: Dikterar till systemd som denna tjänst är beroende av nätverk.mål och bör bara börja efter nätverk.mål tjänsten har påbörjats. Anteckna det Efter används inte för att upprätta någon direkt beroenderelation, den fungerar helt enkelt som en utlösande faktor.
  • Typ=enkel: Det finns flera typer av tjänster. Men tjänsten i denna demonstration är en regelbunden process och därför förklarar vi att det är så. Du kan hitta alla olika värden för detta på den officiella dokumentationssidan som länkades tidigare.
  • Starta om=alltid: Detta innebär att närhelst tjänsten avslutas ska den alltid starta om.
  • RestartSec=30: Detta ställer in intervallet mellan varje start av tjänsten till 30 sekunder.
  • User=root: Detta definierar att tjänsten kommer att köras som rotanvändare. I det här fallet är detta ett måste-steg eftersom Nmap inte kommer att kunna köras utan root-privilegier.
  • ExecStart: Detta direktiv innehåller den absoluta sökvägen till programmet som ska köras tillsammans med alla nödvändiga flaggor eller argument som krävs för att programmet ska fungera korrekt.
  • WantedBy=multi-user.target: Denna parameter i en tjänstfil anger vilket mål som ska inkludera eller "vill ha" tjänsten. När en tjänst ingår i ett mål betyder det att tjänsten ska starta när systemet når det målet under uppstartsprocessen. I det här fallet bör tjänsten starta när systemet går in i fleranvändarläget. Fleranvändarläget är ett tillstånd där systemet är helt uppstartat och tillåter flera användare att logga in och använda systemet.

Steg 3: Aktivera och starta tjänsten

Nu när du har skapat enhetsfilen är de enda stegen kvar för att aktivera din tjänst att aktivera och köra den. Du kan aktivera och starta din tjänst med kommandot systemctl.

Så här använder du systemctl för att aktivera, starta och kontrollera statusen för din tjänst:

sudo systemctl aktivera .service
sudo systemctl start .service
sudo systemctl status .service

Nu borde din anpassade tjänst vara igång! I det här fallet bör du se en Nmap-skanning som körs var trettionde sekund och utdata lagras i results.txt filen i hemkatalogen.

Att ställa in en systemd tjänst på Linux är enkelt!

Även om det kan verka skrämmande att ställa in en anpassad tjänst från början, är det ett ganska enkelt sätt att ställa in upp en självutförande, obevakad process för att utföra repetitiva uppgifter åt dig och öka din produktivitet.

I demotjänsten har vi knappt skrapat på ytan av hur du kan konfigurera och konfigurera en tjänst. För att lära dig allt om hur du kan anpassa din tjänst, rekommenderar vi att du går igenom den officiella dokumentationen som länkas till i anteckningen.

Om att ställa in och underhålla en tjänst känns som en alltför stor uppgift för dig, överväg att kolla in ett alternativt sätt att automatisera repetitiva uppgifter på Linux.