Ett Linux-system tillhandahåller en mängd olika systemtjänster (som processhantering, inloggning, syslog, cron, etc.) och nätverkstjänster (t.ex. fjärrinloggning, e-post, skrivare, webbhotell, datalagring, filöverföring, domännamnsupplösning (med DNS), dynamisk IP-adresstilldelning (med DHCP) och mycket mer).
Tekniskt sett en tjänsten är en process eller grupp av processer (allmänt känd som demoner) som körs kontinuerligt i bakgrunden och väntar på att förfrågningar ska komma in (särskilt från klienter).
Linux stöder olika sätt att hantera (start, stopp, starta om, aktivera automatisk start vid systemstart etc.) tjänster, vanligtvis via en process- eller servicechef. De flesta om inte alla moderna Linux-distributioner använder nu samma processhanterare: systemd.
Läs också: Historien bakom ”init” och ”systemd”: Varför ”init” Behövs ersättas med ”systemd” i Linux
Systemd är en system- och servicechef för Linux; en ersättning för init-processen, som är kompatibel med SysV- och LSB-initskript och systemctl-kommandot är det primära verktyget för att hantera systemd.
I den här guiden kommer vi att visa hur man listar alla löpande tjänster under systemd i Linux.
Listar körtjänster under SystemD i Linux
När du kör kommandot systemctl utan några argument, kommer det att visa en lista över alla laddade systemd-enheter (läs systemdokumentationen för mer information om systemd-enheter) inklusive tjänster, och visa deras status (vare sig aktiv eller inte).
# systemctl
För att lista alla laddade tjänster på ditt system (oavsett om de är aktiva, körs, avslutas eller misslyckas använder du underkommandot list-enheter och --type
växla med ett tjänstvärde.
# systemctl list-units --type=serviceOR# systemctl --type=service
Och för att lista alla laddade men aktiva tjänster, både körande och de som har avslutats, kan du lägga till --state
alternativet med ett värde av aktiv, enligt följande.
# systemctl list-units --type=service --state=activeOR# systemctl --type=service --state=active
Men för att få en snabb överblick över alla körande tjänster (dvs. alla laddade och aktivt körande tjänster), kör följande kommando.
# systemctl list-units --type=service --state=running OR# systemctl --type=service --state=running
Om du ofta använder det tidigare kommandot kan du skapa ett alias-kommando i din ~ / .bashrc-fil som visas för att enkelt åberopa det.
# vim ~/.bashrc
Lägg sedan till följande rad under aliaslistan som visas på skärmdumpen.
alias running_services="systemctl list-units --type=service --state=running"
Spara ändringarna i filen och stäng den. Och från och med nu använder du kommandot ”running_services” för att visa en lista över alla laddade, aktivt körande tjänster på din server.
# running_services#use the Tab completion
Dessutom är en viktig aspekt av tjänsterna porten de använder. För att bestämma porten som en demonprocess lyssnar på kan du använda netstat eller ss-verktygen som visas.
Där flaggan -l
betyder skriv ut alla lyssningsuttag, -t
visar alla TCP-anslutningar, -u
visar alla UDP-anslutningar, -n
betyder utskrift av numeriska portnummer (istället för applikationsnamn) och -p
betyder visa applikationsnamn.
# netstat -ltup | grep zabbix_agentdOR# ss -ltup | grep zabbix_agentd
femte kolumnen visar uttaget: Lokal adress: Port. I det här fallet lyssnar processen zabbix_agentd på port 10050.
Dessutom, om din server har en brandväggstjänst igång, som styr hur du blockerar eller tillåter trafik till eller från utvalda tjänster eller portar, kan du lista tjänster eller portar som har öppnats i brandväggen med kommandot firewall-cmd eller ufw (beroende på Linux-distributioner du använder) som visas.
# firewall-cmd --list-services # firewall-cmd --list-ports$ sudo ufw status