网站搜索

如何列出 Linux 中 Systemd 下所有正在运行的服务


Linux系统提供各种系统服务(如进程管理、登录、syslog、cron等)和网络服务(如远程登录、电子邮件、打印机、虚拟主机、数据存储) 、文件传输、域名解析(使用 DNS)、动态 IP 地址分配(使用 DHCP)等等)。

从技术上讲,服务是在后台连续运行的一个进程或一组进程(通常称为守护进程),等待传入的请求(尤其是来自客户端的请求)。

Linux 支持不同的服务管理方式(启动、停止、重新启动、在系统启动时启用自动启动等),通常通过进程或服务管理器。大多数(如果不是全部)现代 Linux 发行版现在都使用相同的进程管理器:systemd

什么是 Systemd?

Systemd 是 Linux 的系统和服务管理器; init 进程的直接替代品,它与 SysVLSB 初始化脚本兼容,并且 systemctl 命令是主要工具管理systemd

为什么列出 Linux 中正在运行的服务?

出于多种原因,了解 Linux 系统上正在运行的服务至关重要。它使您能够监控资源利用率、解决问题并有效管理系统性能。 Systemd 通过提供强大的命令来收集有关活动服务的信息,从而简化了这项任务。

在本指南中,我们将演示列出 Linux 中 Systemd 下所有正在运行的服务的过程,为所有经验级别的用户提供全面的演练。

列出 Linux 中 SystemD 下正在运行的服务

当您运行不带任何参数的 systemctl 命令时,它将显示所有加载的 systemd 单元的列表(有关 systemd 单元的更多信息,请阅读 systemd 文档),包括服务,显示其状态(无论是否活动) )。

systemctl 

列出 systemctl 中的所有单位

要列出系统上所有已加载的服务(无论是活动的、正在运行的、已退出的还是失败的),请使用 list-units 子命令和带有 service 值的 --type 开关。

systemctl list-units --type=service
OR
systemctl --type=service

要列出所有已加载但活动的服务(包括正在运行的服务和已退出的服务),您可以添加值为 active--state 选项,如下所示。

systemctl list-units --type=service --state=active
OR
systemctl --type=service --state=active

列出 systemctl 中正在运行的服务

但要快速浏览所有正在运行的服务(即所有已加载且正在运行的服务),请运行以下命令。

systemctl list-units --type=service --state=running 
OR
systemctl --type=service --state=running

让我们探讨一下与 Systemd 单元及其状态相关的关键术语:

  • 单元 – 单元可以是服务、套接字、设备或各种其他实体。
  • 负载 – 指示单元是否已负载。一个单元可以被加载,但不一定是活动的。
  • 活动 – 显示设备是否正在积极运行,或者是否遇到问题并处于故障或非活动状态。
  • SUB – 它提供有关设备特定状态的附加详细信息。对于服务,它可能指示服务是否正在运行(正在运行)、已停止(已退出)或遇到问题(已失败)。
  • 描述 – 它可以帮助用户识别和理解设备的用途,而无需深入研究详细的配置文件。

为 systemctl 创建别名

如果您经常使用前面的命令,您可以在 ~/.bashrc 文件中创建一个别名命令,如图所示,以便轻松调用它。

vim ~/.bashrc

然后在别名列表下添加以下行,如屏幕截图所示。

alias running_services='systemctl list-units  --type=service  --state=running'

保存文件中的更改并关闭它。从现在开始,使用“running_services”命令查看服务器上所有已加载、正在运行的服务的列表。

running_services	#use the Tab completion 

查找进程正在侦听的端口

此外,服务的一个重要方面是它们使用的端口。要确定守护进程正在侦听的端口,您可以使用 netstat 或 ss 命令,如下所示。

其中标志-l表示打印所有监听套接字,-t显示所有TCP连接,-u显示所有UDP连接,- n 表示打印数字端口号(而不是应用程序名称),-p 表示显示应用程序名称。

netstat -ltup | grep zabbix_agentd
OR
ss -ltup | grep zabbix_agentd

第五列显示套接字:本地地址:端口。在本例中,进程 zabbix_agentd 正在侦听端口 10050

列出正在运行的防火墙服务

此外,如果您的服务器正在运行防火墙服务,该服务控制如何阻止或允许进出选定服务或端口的流量,您可以使用 firewall-cmd 列出已在防火墙中打开的服务或端口 或 ufw 命令(取决于您使用的 Linux 发行版),如图所示。

firewall-cmd --list-services   [FirewallD]
firewall-cmd --list-ports

sudo ufw status     [UFW Firewall]

目前为止就这样了!在本指南中,我们演示了如何在 Linux 中查看 systemd 下正在运行的服务。我们还介绍了如何检查端口服务正在侦听以及如何查看系统防火墙中打开的服务或端口。

您还有什么补充或疑问吗?如果是,请使用下面的评论表联系我们。