如何查看Linux systemd下正在运行的服务

描述

Linux 系统提供了各种系统服务(如 syslog、cron 等)和网络服务(如 DNS、SSH 等)。

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

Linux 支持不同的服务管理方式(启动、停止、重启、设置开机启动等),通常是通过进程或服务管理器。大多数 Linux 发行版使用 systemd 进程管理器。

什么是 systemd

Systemd 是 Linux 的系统和服务管理器,init 进程的直接替代品,它与 SysV 和 LSB init 脚本兼容,systemctl 命令是管理 systemd 的主要工具。

Systemd 的更多信息,可以查看Rocky Linux Systemd 介绍一文。

为什么要查看 Linux 中正在运行的服务

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

在本指南中,我将演示在 Linux 系统中列出 Systemd 下所有正在运行的服务的进程,为不同经验水平的读者提供全面的指导。

列出 systemd 下正在运行的服务

执行不带任何参数的 systemctl 命令,将显示所有已加载的 systemd 单元列表,包括 services,并显示它们的状态(无论是否处于 active 状态)。

systemctl

服务管理器
列出所有已加载的 systemd unit list

列出 systemctl 中的所有 Units

要列出系统中所有加载的 services(无论是 active、running、exited 还是 failed),请使用 list-units 子命令和 --type 选项,其值为 service。

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

服务管理器
查看 systemctl 中的所有服务

要列出所有已加载且处于 active 状态的 services,可以添加 --state 选项,其值为 active,如下所示。

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

服务管理器
查看状态为 active 的 services

列出 systemctl 中正在运行的服务

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

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

服务管理器
查看 Running 状态的 Services

以下是与 Systemd 单元及其状态相关的主要术语:

  • Unit:单元可以是 service、socket、device 或各种其他实体。
  • Load:表示单元是否已加载。一个单元可以被加载,但状态不一定是 active 的。
  • Active:显示单元是否正在主动运行,或者它是否遇到问题,处于失败或不活动状态。
  • SUB:提供了关于单元的特定状态的附加细节。对于 service,它可能指示服务是否正在运行(running)、已停止(exited)或遇到问题(failed)。
  • Description:描述文档,帮助用户识别和理解单元的用途,而无需深入研究详细的配置文件。

为 systemctl 命令创建别名

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

# vim ~/.bashrc

然后在别名列表下添加以下行:

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

保存并关闭文件,执行 source 命令,加载该命令:

# source ~/.bashrc

接下来就可以使用 running_services 命令查看服务器上所有已加载的、正在运行的服务的列表。

服务管理器
使用别名查看服务列表

查找进程监听的端口

此外,查看服务的端口也很重要。要确定守护进程正在监听的端口,可以使用 netstatss 命令,如下所示。

netstat -ltunp
# OR
ss -ltunp

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

例如查看 ssh 进程的端口号信息:

# ss -ltunp | grep ssh

服务管理器
查看 ssh 服务端口号

第五列显示套接字:local_address:port。在这种情况下,ssh 进程正在侦听 TCP 22 端口。

总结

在本指南中,我演示了如何在 Linux 中查看 systemd 下正在运行的服务。还介绍了如何查看服务正在监听的端口。这些都是运维工作中的常见操作。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分