在Linux系统中,服务(Service)是后台运行的守护进程,负责处理关键任务(如网络、安全、数据库等),掌握查看服务的方法对系统管理、故障排查和性能优化至关重要,以下是多种专业且实用的查看方式,适用于主流的Linux发行版(如Ubuntu、CentOS、Fedora)。
适用场景:现代Linux系统(Systemd系统,如Ubuntu 16.04+、CentOS 7+)。
步骤:
-
查看所有服务状态:
systemctl list-units --type=service --all
--all
:显示包括未激活的服务。- 输出列说明:
LOAD
(配置加载状态)、ACTIVE
(运行状态)、SUB
(详细状态)、DESCRIPTION
(服务描述)。
-
查看单个服务详情:
systemctl status apache2.service # 替换为你的服务名(如nginx、mysql)
关键信息:运行状态(Active)、日志片段(Latest logs)、进程ID(Main PID)。
-
过滤服务状态:
systemctl list-units --type=service --state=running # 仅显示运行中的服务
通过 service 命令(传统SysVinit系统)
适用场景:旧版系统(如CentOS 6)或兼容性操作。
步骤:
service --status-all # 列出所有服务状态
[ + ]
:服务正在运行;[ - ]
:服务已停止;[ ? ]
:状态未知。- 查看具体服务:
service nginx status # 示例
通过 ps 命令查看服务进程
适用场景:确认服务是否在进程层级运行。
步骤:
ps aux | grep -E 'nginx|mysql|httpd' # 替换为服务名关键词
- 关键列:
USER
(运行用户)、%CPU
(CPU占用)、COMMAND
(进程命令)。 - 组合命令:
ps -ef | grep -i "cron" # 不区分大小写搜索cron服务
通过 netstat/ss 命令查看服务端口
适用场景:确认服务是否监听端口(如Web服务、数据库)。
步骤:
-
使用 netstat:
netstat -tulpn | grep ':80' # 查看80端口占用服务
-t
(TCP)、-u
(UDP)、-l
(监听状态)、-p
(显示进程名)。
-
使用 ss(更高效):
ss -ltnp | grep sshd # 查看SSH服务监听端口
通过 /etc/init.d/ 目录(SysVinit脚本)
适用场景:直接操作服务脚本(适用于无 systemctl 的系统)。
步骤:
ls /etc/init.d/ # 列出所有服务脚本 /etc/init.d/nginx status # 查看状态
图形化工具(可选)
- systemd-cgls:
systemd-cgls # 以树形结构显示服务层级
- Cockpit Web控制台:
- 安装后通过浏览器访问
http://localhost:9090
,在”Services”模块管理服务。
- 安装后通过浏览器访问
总结与建议
方法 | 适用场景 | 优势 |
---|---|---|
systemctl |
现代Linux系统(主流选择) | 信息详细,支持状态过滤 |
service |
旧版系统或兼容操作 | 命令简洁 |
ps + grep |
确认进程是否存在 | 直接关联资源占用 |
ss /netstat |
验证网络服务端口 | 快速定位网络问题 |
最佳实践:
- 优先使用
systemctl
(兼容性广且功能强大)。 - 组合命令使用(如
systemctl status
+ss -ltnp
验证服务运行和端口)。 - 权限提示:普通用户需加
sudo
查看系统级服务。
引用说明:
- 基于Linux man手册(systemctl(1)、ss(8)等)及官方文档(systemd.io)。
- 命令兼容性参考Red Hat、Ubuntu及Arch Linux的发行版指南。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9288.html