A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

通过systemd列出下所有正在运行的服务





前言

Linux系统提供各种系统服务(如进程管理、登录、syslog、cron等)和网络服务(如远程登录、电子邮件、打印机、Web主机、数据存储、文件传输、域名解析(使用DNS)、动态IP地址分配(使用DHCP)等等)。
从技术上讲,服务是一个或一组进程(通常称为守护进程)在后台连续运行,等待请求(特别是来自客户机的请求)。
Linux支持不同的方法来管理服务(启动、停止、重启、在系统启动时的自动启动等),通常通过流程或服务管理器。 大多数现代Linux发行版现在使用相同的进程管理器:systemd。
Systemd是Linux的系统和服务管理器; init进程的替代品,与SysV和LSB init脚本兼容,systemctl命令是管理systemd的主要工具。
在本教程中,我们将演示如何在Linux下列出systemd下所有正在运行的服务。

基本操作

在Linux SystemD下列出正在运行的服务
当您运行没有任何参数的systemctl命令时,它将显示所有已加载的systemd单元(有关systemd单元的更多信息,请阅读systemd文档)的列表,包括服务,并显示它们的状态(是否处于活动状态)。
[Shell] 纯文本查看 复制代码
systemctl


要列出系统上所有已加载的服务(无论是活动的,运行的,退出的还是失败的,请使用 list-units子命令和--type开关,其值为service。
[Shell] 纯文本查看 复制代码
systemctl list-units --type=service

或者
[Shell] 纯文本查看 复制代码
systemctl --type=service


要列出所有已加载但处于活动状态的服务,包括正在运行的服务和已退出的服务,可以添加--state选项,其值为active,如下所示。
[Shell] 纯文本查看 复制代码
systemctl list-units --type=service --state=active

或者
[Shell] 纯文本查看 复制代码
systemctl --type=service --state=active


如果要快速浏览所有正在运行的服务(即所有已加载和正在运行的服务),请运行以下命令。
[Shell] 纯文本查看 复制代码
systemctl list-units --type=service --state=running

或者
[Shell] 纯文本查看 复制代码
systemctl --type=service --state=running


结合其他命令的操作

要确定守护程序进程正在侦听的端口,可以使用netstat或ss工具,如图所示。

其中标志-l表示打印所有侦听套接字,-t显示所有TCP连接,-u表示所有UDP连接,-n表示打印数字端口号(而不是应用程序名称),-p表示显示应用程序名称。
[Shell] 纯文本查看 复制代码
netstat -ltup | grep mysqld.service


总结

过去,使用init形式管理我们的进程和服务非常不方便,很多时候的操作,不能直接快速拿到结果。如今有了systemd,就能集中管理和控制我们的进程和一些具体数据,非常方便。
好了,大家试试吧。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马