Hur listar du tjänster på Linux

Som systemadministratör har du förmodligen att göra med många tjänster varje dag.

På Linux tjänster används för många olika ändamål.

De kan användas för att starta en SSH-server på din maskin eller så kan de utföra vissa åtgärder på en viss timme eller dag.

Oavsett om du använder en Debian-baserad distribution eller en RedHat en, frågetjänster är mycket lika.

Med tanke på den distribution du använder och mer specifikt initialiseringssystemet (init eller systemd) kan du dock behöva använda olika kommandon.

I den här självstudien lär du dig hur du kan, med tanke på din systemhanterare, lista alla tjänster på din Linux-maskin.

Innehållsförteckning

Bestäm systemhanteraren används

Som ni säkert vet använder de senaste distributionerna Systemd systemhanteraren.

Det har dock inte alltid varit fallet: tidigare använde de flesta distributionerna SysVinit-systemhanteraren.

Som en konsekvens finns det verkligen två sätt att hantera dina tjänster på ett Linux-system.

Innan du lär dig kommandona för att lista tjänster, måste du känna till systemhanteraren som du använder för närvarande.

För att bestämma din nuvarande systemhanterare är det enklaste sättet att använda ” pstree ”-kommandot och för att kontrollera den första processen som någonsin körs på ditt system.

Om du ser ”systemd” betyder det självklart att du för närvarande använder systemd. Men om du ser ” init ”, det betyder att du använder SysVinit.

På Ubuntu 14.04, som fortfarande använder det gamla init-systemet, kan ditt” pstree ”se ut så här.

Lista tjänster med systemctl

Det enklaste sättet att lista tjänster på Linux, när du är i ett systemd-system, är att använda kommandot ”systemctl” följt av ”list-enheter”. Du kan ange alternativet ”–type = service” för att bara begränsa resultaten till tjänster.

Som standard visar detta kommando dig bara de tjänster som är aktiva eller de tjänster som har misslyckats i ditt system. I skärmdumpen ovan är de flesta tjänsterna aktiva men logrotaten (markerad med rött) är markerad som misslyckad.

Fantastiskt, du lärde dig hur du enkelt kan lista dina tjänster på en Linux-server.

Som du kanske har märkt hade du inte tillgång till alla tjänster: hur är det med inaktiva tjänster? Vad sägs om tjänster som inte laddades av systemd vid start?

Lista alla tjänster på Linux med hjälp av list-enheter

För att lista alla tjänster, dvs. aktiva och inaktiva, måste du använda kommandot ”systemctl list-units” följt av alternativet ”–all”.

På samma sätt kan du bara begränsa resultaten till tjänster genom att använda typfiltret.

Som du kan se listade också inaktiva tjänster vilket kan vara lämpligt om du bara skrev din tjänst och ser efter den i listan.

I det här fallet listas bara laddade tjänster. Vid start laddar systemd enhetsfiler och det kan välja att inte ladda en specifik tjänst om den upptäcker att den inte kommer att användas av systemet.

Som en konsekvens är det en verklig skillnad mellan ”laddad ”Och” installerade ”tjänster. ”Installerade” tjänster innebär att enhetsfiler kan hittas i motsvarande sökvägar.

Lista tjänster efter stat

I vissa fall kanske du bara är intresserad av tjänster som har misslyckats. För det kan du ange tillståndet som du letar efter som ett alternativ för systemctl-kommandot.

Där ”tillstånd” kan vara ett av följande värden: aktivt, inaktivt, aktiverande, avaktiverar, misslyckades, hittades inte eller var död.

Till exempel, om vi bara är intresserade av ”misslyckade” tjänster kommer vi att köra följande kommando

Lista alla servicefiler med list-enhetsfiler

Slutligen, om du är intresserad av ”laddade”, ”installerade”, ”inaktiverade” samt ”aktiverade” servicefiler, finns det ett annat kommando det kan vara ganska praktiskt.

För att lista alla tillgängliga servicefiler måste du använda kommandot ”systemctl” följt av ”list-unit-files”. Alternativt kan du ange typen med alternativet ”–type = service”.

Alternativt kan du använda kommandot ”grep” för att söka efter specifika sökvägar på ditt system som kan innehålla servicefiler.

Grattis, du lärde dig hur du kan lista tjänster om ditt system använder systemd!

Lista tjänster med hjälp

Det enklaste sättet att lista tjänster på Linux, när du är i ett SystemV init-system, är att använda ” service ”-kommandot följt av” –status-all ”-alternativet. På det här sättet får du en fullständig lista med tjänster på ditt system.

Som du kan se är varje tjänst listade före symboler under parentes. Dessa symboler betyder:

  • +: betyder att servicen e körs;
  • -: betyder att tjänsten inte körs alls;
  • ? : betyder att Ubuntu inte kunde avgöra om tjänsten körs eller inte.

Så varför kan vissa tjänster berätta om de kör eller inte, och vissa inte?

Allt handlar om implementeringen av initskriptet. I vissa skript, till exempel utev-skriptet, kan du se att kommandot ”status” implementeras.

Detta är inte fallet för skriptet” dns-clean ”till exempel vilket är anledningen till att du har en fråga markera när du frågar efter den här tjänsten.

Lista SysVinit-tjänster i mappar

Ett annat sätt att lista den aktuella listan över tjänster är att använda kommandot ”ls” i mapparna som innehåller alla skript på ett Linux-system, nämligen ”/etc/init.d”.

Slutsats

I den här handledningen lärde du dig hur du enkelt kan lista tjänster i ett Linux-system oavsett om du använder systemd eller SysVinit-enheter.

Om du är intresserad av att skapa egna tjänster rekommenderar vi att du tittar på följande resurser. De kan vara riktigt användbara för att korrekt uppnå det.

  • Skriva ett startskript för init-system;
  • Starta tjänster vid start med systemd;

Om du är intresserad av Linux systemadministration har vi ett komplett avsnitt om detta ämne på webbplatsen, så se till att kolla in det.

Ikoner gjorda av Freepik från FlatIcon

Write a Comment

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *