在Linux系统管理中,查看服务名是日常运维的基础操作之一,服务(Service)通常指在后台运行的程序,用于提供特定的功能或支持系统运行,如网络服务(HTTP、SSH)、系统守护进程(cron、logrotate)等,准确识别服务名是启动、停止、重启或监控服务的前提,本文将系统介绍Linux中查看服务名的常用方法,涵盖传统SysVinit系统和现代systemd系统,并结合实例说明操作技巧。

基于systemd的系统查看服务名
systemd是现代Linux发行版(如CentOS 7+、Ubuntu 16.04+、Debian 8+)默认的初始化系统和服务管理器,通过systemctl命令可高效管理服务,其核心优势在于支持并行启动、服务依赖管理和详细的日志记录。
列出所有服务(包括已启用和未启用)
使用systemctl list-units --type=service命令可列出系统中所有服务的状态,包括服务名、加载状态、活动状态和描述信息。
systemctl list-units --type=service
输出示例(部分):
UNIT LOAD ACTIVE SUB DESCRIPTION
accounts-daemon.service loaded active running Accounts Service
apache2.service loaded active running The Apache HTTP Server
cron.service loaded active running Regular background program processing daemon
ssh.service loaded active running OpenBSD Secure Shell server
- UNIT:服务名(以
.service实际使用时可省略后缀); - LOAD:服务单元文件是否被系统加载(
loaded/not-found); - ACTIVE:服务是否处于活动状态(
active/inactive); - SUB:服务的详细子状态(如
running表示运行中,dead表示已停止); - DESCRIPTION:服务的功能描述。
筛选特定状态的服务
若需仅查看正在运行或已停止的服务,可通过--state参数筛选:
- 查看运行中的服务:
systemctl list-units --type=service --state=running - 查看已停止的服务:
systemctl list-units --type=service --state=dead
查看服务详细信息
通过systemctl status 服务名可获取服务的详细状态,包括进程ID(PID)、内存占用、启动日志等,例如查看SSH服务:
systemctl status ssh
输出示例:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-10-30 10:20:00 CST; 2 days ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1234 (sshd)
Tasks: 1 (limit: 1137)
Memory: 5.2M
CGroup: /system.slice/ssh.service
└─1234 /usr/sbin/sshd -D
- Loaded:服务单元文件路径及是否开机自启(
enabled/disabled); - Active:服务启动时长及当前状态;
- Main PID:服务主进程ID,可用于进一步排查进程资源占用。
基于SysVinit的系统查看服务名
对于旧版Linux发行版(如CentOS 6、Ubuntu 14.04),使用SysVinit作为初始化系统,服务管理依赖service命令和/etc/init.d/目录下的脚本。
通过service命令查看服务状态
service --status-all命令可列出所有SysVinit服务的状态,输出中[ + ]表示正在运行,[ - ]表示已停止,[ ? ]表示状态未知。

service --status-all
输出示例(部分):
[ + ] acpid
[ + ] cron
[ - ] dbus
[ + ] networking
[ ? ] pulseaudio
查看特定服务状态
通过service 服务名 status可检查单个服务状态,例如查看网络服务:
service networking status
输出示例:
Networking is running
直接查看/etc/init.d/目录
SysVinit的服务脚本存储在/etc/init.d/目录下,通过ls命令即可列出所有服务名:
ls /etc/init.d/
输出示例:
acpid cron dbus networking pulseaudio ssh
通用服务查看方法
无论系统使用systemd还是SysVinit,均可通过以下通用方法查看服务相关信息。
通过进程名反查服务
使用ps命令结合grep可查找运行中的进程,进而反推服务名,例如查找SSH相关进程:
ps aux | grep ssh
输出示例:

root 1234 0.0 0.1 11200 4500 ? Ss Oct30 0:00 /usr/sbin/sshd -D
user 5678 0.0 0.1 12345 5000 pts/0 S+ 10:30 0:00 grep ssh
其中/usr/sbin/sshd是SSH服务的守护进程,对应服务名通常为ssh或sshd。
查看端口占用情况
服务通常通过特定端口监听网络请求,通过netstat或ss命令可查看端口占用,进而关联服务名,例如查看80端口(HTTP服务):
ss -tulpn | grep :80
输出示例:
LISTEN 0 128 *:80 *:* users:(("apache2",pid=2345,fd=4))
pid=2345:占用端口的进程ID;apache2:进程名,对应服务名为apache2(或httpd,取决于发行版)。
systemd与SysVinit命令对比
为方便读者快速理解两种系统的差异,以下列出常用服务管理命令的对比:
| 操作 | systemd命令 | SysVinit命令 |
|---|---|---|
| 列出所有服务 | systemctl list-units --type=service |
service --status-all |
| 查看服务状态 | systemctl status 服务名 |
service 服务名 status |
| 启动服务 | systemctl start 服务名 |
service 服务名 start |
| 停止服务 | systemctl stop 服务名 |
service 服务名 stop |
| 重启服务 | systemctl restart 服务名 |
service 服务名 restart |
| 设置开机自启 | systemctl enable 服务名 |
chkconfig 服务名 on |
| 取消开机自启 | systemctl disable 服务名 |
chkconfig 服务名 off |
注意事项
- 权限要求:查看或管理服务通常需要root权限,非root用户需在命令前添加
sudo。 - 服务名差异:同一服务在不同发行版中名称可能不同,如Apache服务在Ubuntu中为
apache2,在CentOS中为httpd。 - 兼容性:现代systemd系统仍兼容部分SysVinit命令(如
service ssh status会自动重定向为systemctl status ssh),但建议优先使用systemctl以获得更完整的功能。 - 服务单元文件:systemd的服务配置文件存储在
/lib/systemd/system/(系统服务)和/etc/systemd/system/(用户自定义服务),通过查看这些文件可了解服务的启动参数和依赖关系。
通过以上方法,可快速定位Linux系统中的服务名及其状态,为后续的服务管理和故障排查奠定基础,实际操作中,建议结合系统版本选择合适的命令,并通过man手册(如man systemctl)获取更详细的参数说明。



















