Linux服务器查看启动服务的5种方法
文章目录
- 1. 使用 `systemctl` 命令(推荐,适用于使用 systemd 的系统)
- 查看所有已激活(运行中)的服务
- 查看所有已启用(开机自启)的服务
- 查看所有服务的综合状态(包括运行和未运行)
- 2. 使用 `service` 命令(传统SysVinit系统,或兼容模式)
- 查看所有服务状态
- 查看特定服务状态
- 3. 检查监听的网络端口(间接查看网络服务)
- 4. 查看开机自启服务(SysVinit风格)
- 5. 查看进程(最底层方法)
- 总结与建议
在Linux服务器上,有多种方法可以查看当前系统启动了哪些服务。以下是最常用和有效的几种命令,适用于大多数主流Linux发行版(如CentOS, Ubuntu, Debian等)。
1. 使用 systemctl
命令(推荐,适用于使用 systemd 的系统)
现代Linux发行版大多使用 systemd
作为初始化系统和服务管理器。
查看所有已激活(运行中)的服务
systemctl list-units --type=service --state=active
或简写:
systemctl --type=service --state=active
查看所有已启用(开机自启)的服务
systemctl list-unit-files --type=service --state=enabled
查看所有服务的综合状态(包括运行和未运行)
systemctl list-units --type=service
说明:
active
状态表示服务当前正在运行。enabled
表示服务设置为开机自启动。loaded
表示服务配置已加载。
2. 使用 service
命令(传统SysVinit系统,或兼容模式)
虽然较老,但在许多系统上仍然可用。
查看所有服务状态
service --status-all
[ + ]
表示服务正在运行。[ - ]
表示服务未运行。[ ? ]
表示状态未知。
查看特定服务状态
service <service_name> status
# 例如:
service sshd status
service nginx status
3. 检查监听的网络端口(间接查看网络服务)
许多服务会监听特定的端口。通过查看监听的端口,可以推断哪些网络服务已启动。
# 使用 netstat (需安装 net-tools)
netstat -tuln# 或使用 ss (更现代,推荐)
ss -tuln
-t
:显示TCP端口-u
:显示UDP端口-l
:仅显示监听状态的端口-n
:以数字形式显示端口号和IP地址(不解析名称)
示例输出解读:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN # 表示SSH服务在运行
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN # 表示Web服务(如Nginx/Apache)在运行
4. 查看开机自启服务(SysVinit风格)
对于仍使用SysVinit的系统,或查看传统服务的开机启动项:
# CentOS/RHEL
chkconfig --list# Ubuntu/Debian
ls /etc/rc*.d/S*
5. 查看进程(最底层方法)
直接查看正在运行的进程,可以找到服务相关的进程。
# 查看所有进程
ps aux# 或结合grep过滤特定服务
ps aux | grep nginx
ps aux | grep mysql
总结与建议
方法 | 优点 | 推荐场景 |
---|---|---|
systemctl list-units --type=service --state=active | 最准确、最标准 | 首选方法,查看当前运行的服务 |
systemctl list-unit-files --type=service --state=enabled | 查看开机自启服务 | 检查哪些服务会随系统启动 |
ss -tuln | 查看网络服务监听情况 | 快速判断Web、数据库等网络服务是否启动 |
service --status-all | 兼容性好 | 在较老系统或快速检查时使用 |
推荐操作流程:
- 首先使用
systemctl --type=service --state=active
查看当前运行的服务。 - 使用
ss -tuln
验证关键网络服务(如SSH、Web、数据库)是否在监听端口。 - 如需了解开机启动项,使用
systemctl list-unit-files --type=service --state=enabled
。
这样可以全面、准确地掌握服务器上运行的服务情况。