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
命令说明,内容基于通用实践,具体命令请以系统版本为准。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/40974.html