在Linux系统中,查看当前有哪些服务在运行,是系统管理和故障排查的基础操作。根据系统使用的初始化程序不同,查看方式主要分为systemd体系与传统SysVinit体系两类。

使用systemctl查看服务
现代Linux发行版基本都使用systemd,最直接的方式是用systemctl列出所有已启动的服务单元:
# 查看所有正在运行的服务 systemctl list-units --type=service --state=running # 查看开机自启的服务 systemctl list-unit-files --type=service --state=enabled
如果只想看某个服务状态,可以用status子命令:
systemctl status nginx
传统SysVinit系统查看方式
部分旧版系统没有systemd,可通过如下方式查看:
- 使用service命令列出已知服务
- 直接查看/etc/init.d目录内容
# 列出init.d下的服务脚本 ls /etc/init.d/ # 用service命令查看所有服务状态 service --status-all
通过进程角度确认服务
服务本质上也是进程,可以用ps配合过滤来观察:
# 查看带有服务名关键字的进程 ps aux | grep sshd
对比总结
| 方法 | 适用环境 | 特点 |
|---|---|---|
| systemctl | systemd发行版 | 信息最全,支持单元依赖查看 |
| service --status-all | SysVinit | 简单但输出较粗略 |
| ps aux | 所有环境 | 从进程层确认,不区分服务类型 |
实际工作中建议优先使用systemctl命令,它能明确区分服务单元及其运行状态,避免误判后台脚本与普通进程。