如何列出 Linux 中 Systemd 下所有正在运行的服务
Linux 系统提供各种系统服务(例如进程管理、登录、syslog、cron等)和网络服务(例如远程登录、电子邮件、打印机、网络托管、数据存储、文件传输、域名解析(使用 DNS)、动态 IP 地址分配(使用DHCP)等等)。
从技术上讲,服务是一个进程或一组进程(通常称为守护进程),在后台持续运行,等待请求到来(尤其是来自客户端的请求)。
Linux 支持多种方式来管理服务(启动、停止、重启、在系统启动时启用自动启动等),通常是通过进程或服务管理器。大多数(如果不是全部)现代 Linux 发行版现在都使用相同的进程管理器:systemd。
什么是 Systemd?
Systemd是 Linux 的系统和服务管理器;是init进程的直接替代品,与SysV和LSB init 脚本兼容,而systemctl 命令是管理systemd 的主要工具。
为什么要列出 Linux 中正在运行的服务?
了解 Linux 系统上运行的服务至关重要,原因如下。它使您能够监控资源利用率、解决问题并高效管理系统性能。Systemd 通过提供强大的命令来收集有关活动服务的信息,从而简化了此任务。
在本指南中,我们将演示列出 Linux 中 Systemd 下所有正在运行的服务的过程,为各个经验水平的用户提供全面的指导。
列出 Linux 中 SystemD 下正在运行的服务
当您运行不带任何参数的systemctl 命令时,它将显示所有已加载的 systemd 单元的列表(阅读 systemd 文档以获取有关 systemd 单元的更多信息),包括服务,并显示它们的状态(无论是否活动)。
# systemctl
列出 systemctl 中的所有单元
要列出系统上所有已加载的服务(无论是活动的、正在运行的、已退出的还是失败的),请使用list-units子命令并--type
使用 service 值进行切换。
# systemctl list-units --type=service OR # systemctl --type=service
要列出所有已加载但处于活动状态的服务(包括正在运行的服务以及已退出的服务),您可以添加--state
值为active的选项,如下所示。
# 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下正在运行的服务。我们还介绍了如何检查服务正在监听的端口以及如何查看系统防火墙中打开的服务或端口。
您还有什么补充或疑问吗?如果有,请使用下面的评论表与我们联系。