在Linux系统中,服务的管理方式会随着发行版和系统版本的不同有所差异,查看服务是否关闭的方法也对应有多种,下面介绍几种常用的查看方式。
基于systemd系统的服务状态查看
目前主流的Linux发行版比如Ubuntu 16.04及以上、CentOS 7及以上都采用systemd作为服务管理系统,可以通过systemctl命令直接查看服务状态。
查看服务状态的命令格式为:
# 查看指定服务的运行状态,以nginx服务为例 systemctl status nginx # 如果只需要确认服务是否关闭,可过滤输出内容 systemctl status nginx | grep -i "inactive|dead"
如果服务已经关闭,输出结果中会显示inactive (dead)的标识,说明服务当前处于停止状态。如果服务处于运行状态,则会显示active (running)。
基于SysVinit系统的服务状态查看
部分较旧的Linux发行版或者最小化安装的系统可能还在使用SysVinit管理服务,此时可以使用service命令查看服务状态。
命令格式如下:
# 查看nginx服务状态 service nginx status
如果服务已经关闭,输出通常会提示服务未运行或者停止的相关描述,不同服务的输出内容会有差异,需要结合实际输出判断。
通过进程查看服务是否关闭
无论系统采用哪种服务管理方式,服务运行后都会对应一个或多个进程,可以通过进程查看命令确认服务进程是否存在。
使用ps命令查看
ps命令可以查看当前系统的进程信息,通过过滤服务名称可以确认进程是否存在。
# 查看nginx相关进程 ps -ef | grep nginx # 排除grep自身的进程,更准确判断 ps -ef | grep nginx | grep -v grep
如果执行命令后没有输出任何内容,说明没有对应的服务进程,服务已经关闭。如果有输出内容,则代表服务仍在运行。
使用pgrep命令查看
pgrep命令可以更精准地根据进程名查找进程ID,使用更简便。
# 查看nginx进程的PID pgrep nginx
如果命令没有返回任何结果,说明服务进程不存在,服务已经关闭。如果返回了对应的PID,说明服务仍在运行。
通过端口监听查看服务是否关闭
很多网络服务启动后会监听特定的端口,通过查看端口是否被监听也可以判断服务是否关闭,常用netstat或者ss命令。
使用netstat命令
# 查看80端口是否被监听,nginx默认监听80端口 netstat -tuln | grep 80
如果没有输出内容,说明80端口没有被监听,对应服务已经关闭。如果有输出内容,说明端口处于监听状态,服务仍在运行。
使用ss命令
ss命令是netstat的替代工具,效率更高,使用方式类似。
# 查看80端口监听情况 ss -tuln | grep 80
同样的,没有输出则代表端口未被监听,服务已经关闭。
不同场景的方法选择
如果是通过系统服务管理命令启动的服务,优先使用systemctl或者service命令查看,结果更准确,能直接看到服务的运行状态。如果是手动启动的进程类服务,或者需要确认进程是否残留,使用ps或者pgrep命令更合适。如果是网络服务,还可以通过端口监听情况交叉验证,避免服务状态显示异常但实际端口仍被占用的情况。
| 查看方式 | 适用场景 | 优势 |
|---|---|---|
| systemctl命令 | systemd系统的服务 | 直接显示服务状态,信息全面 |
| service命令 | SysVinit系统的服务 | 兼容旧版系统,操作简单 |
| ps/pgrep命令 | 所有服务进程确认 | 不受服务管理方式限制,可查残留进程 |
| netstat/ss命令 | 网络类服务 | 可从端口层面验证服务状态 |
注意:部分服务可能存在多个进程,查看进程时需要确认所有相关进程都已经退出,避免有子进程残留导致服务未完全关闭的情况。
systemctlserviceps_commandnetstat修改时间:2026-06-22 13:42:56