上一篇
Linux怎样列出所有服务?
- Linux
- 2025-06-28
- 3073
要查看Linux所有服务,可通过以下方法:,1. 使用
systemctl list-units --type=service(Systemd系统),2. 执行
service --status-all(SysVinit系统),3. 检查
/etc/init.d/ 目录中的服务脚本
使用 systemctl 命令(推荐,适用于 systemd 系统)
适用系统:Ubuntu 16.04+、CentOS 7+、Fedora、Debian 9+ 等较新发行版。
步骤:
-
查看所有服务状态(含运行/未运行):
systemctl list-units --type=service --all
LOAD:配置是否加载成功ACTIVE:运行状态(active为运行中)SUB:详细状态(如running或exited)
-
仅查看运行中的服务:
systemctl list-units --type=service --state=running
-
查看服务详情(如SSH):
systemctl status sshd
优点:信息全面,支持过滤;缺点:旧版系统(如CentOS 6)不适用。

使用 service 命令(兼容 SysVinit 和 systemd)
适用系统:新旧版本均支持,但信息较简略。
步骤:
service --status-all
[ + ]:服务正在运行[ - ]:服务已停止[ ? ]:状态未知
注意:部分系统需安装 sysvinit-utils 包。
检查 /etc/init.d/ 目录(传统 SysVinit 系统)
适用系统:CentOS 6、Debian 7 等旧版本。
步骤:
ls /etc/init.d/
此目录存放服务管理脚本,但仅列出可管理服务,不显示实时状态。

通过进程查看运行中的服务
适用场景:确认哪些服务正在消耗资源。
- 结合 ps 命令:
ps aux | grep -E '[s]bin/|usr/bin/' # 过滤系统进程
- 使用 pstree(显示进程树):
pstree -p # 树状结构展示进程关系
查看网络服务
适用场景:排查端口占用或网络服务。
-
ss 命令(推荐):
ss -tulnp # 显示监听端口及对应进程
-t:TCP端口-u:UDP端口-l:仅监听状态-n:显示端口号(非服务名)-p:显示进程信息
-
netstat 命令(部分系统需安装):

netstat -tulnp
其他工具补充
- chkconfig 命令(CentOS 6):
chkconfig --list # 查看服务启动级别配置
- 图形化工具:
systemd-gui(systemd系统)rcconf(Debian/Ubuntu)
总结与建议
| 场景 | 推荐命令 |
|---|---|
| 新系统(如Ubuntu 22.04) | systemctl list-units --type=service |
| 兼容新旧系统 | service --status-all |
| 检查端口占用 | ss -tulnp |
| 旧系统(如CentOS 6) | chkconfig --list + /etc/init.d/ |
注意事项:
- 操作需
root权限(命令前加sudo)。 - 谨慎停止服务:部分服务(如
sshd或network)停用可能导致系统异常。 - 学习服务作用:使用
man systemctl或查阅文档(如systemd.unit 官方手册)。
引用说明:
本文参考 Linux 官方文档(systemd 手册)、IBM Developer 的 Linux 服务管理指南,以及 Ubuntu Manpage 的 systemctl、ss 命令说明,内容基于通用实践,具体命令请以系统版本为准。
