在Linux系统中,服务(Service)是运行在后台的应用程序,通常用于提供特定功能(如Web服务、数据库等),查询服务状态是系统管理的基础操作,无论是检查服务是否正常运行、排查故障,还是管理启动项,都需要掌握相关命令,以下是多种查询Linux服务的详细方法,适用于主流发行版(如Ubuntu、CentOS、Debian等)。systemctl
是管理 systemd 系统的标准工具,支持大多数现代 Linux 发行版。
常用操作:
-
查看所有服务状态
systemctl list-units --type=service # 列出所有已加载的服务 systemctl list-units --type=service --all # 包含未激活的服务
输出示例:
UNIT LOAD ACTIVE SUB DESCRIPTION ssh.service loaded active running OpenSSH server nginx.service loaded active running Nginx web server
-
检查单个服务状态
systemctl status nginx # 替换 nginx 为目标服务名
关键信息解读:
Active: active (running)
:服务正在运行。Loaded: loaded (/usr/lib/systemd/system/nginx.service)
:服务配置文件路径。- 日志片段:显示最近的服务活动记录(如错误信息)。
-
过滤服务状态
systemctl list-units --type=service --state=running # 仅显示运行中的服务 systemctl list-units --type=service --state=failed # 仅显示启动失败的服务
使用 service 命令(兼容 SysVinit 系统)
适用于旧版系统(如 CentOS 6)或兼容性场景。
基本语法:
service <服务名> status
示例:
service sshd status # 检查 SSH 服务状态
输出示例:
sshd (pid 1234) is running... # 表示服务正在运行
通过进程检查服务
若服务未注册到 systemd/SysVinit,可直接检查进程:
-
使用 ps 命令
ps aux | grep nginx # 替换 nginx 为进程关键词
输出示例:
root 1234 0.0 0.1 12345 6789 ? Ss 10:00 0:00 nginx: master process
存在相关进程即表示服务在运行。
-
使用 pgrep 快速定位
pgrep -l nginx # 列出匹配进程的 PID 和名称
查看服务日志(故障排查关键)
日志是诊断服务问题的核心:
-
通过 journalctl(systemd 专用)
journalctl -u nginx.service # 查看 Nginx 服务的全部日志 journalctl -u nginx --since "2025-10-01" --until "2025-10-02" # 按时间过滤 journalctl -u nginx -p err # 仅显示错误日志
-
直接查看日志文件
传统服务日志通常位于/var/log/
:tail -f /var/log/nginx/error.log # 实时监控 Nginx 错误日志
其他辅助方法
-
检查端口占用
若服务通过端口通信(如 Web 服务默认 80 端口):ss -tulnp | grep :80 # 查看 80 端口的进程
输出示例:
tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=1234,fd=6))
-
验证配置文件
服务启动失败可能是配置错误:nginx -t # Nginx 配置语法检查(其他服务如 sshd -t)
常见问题与解决
-
问题1:服务状态显示
failed
或inactive
- 解决步骤:
- 查看日志:
journalctl -u <服务名> -xe
- 检查依赖:
systemctl list-dependencies <服务名>
- 重载配置:
systemctl daemon-reload
- 查看日志:
- 解决步骤:
-
问题2:命令未找到(如
systemctl
)- 原因:系统使用旧版 init(如 SysVinit)。
- 替代方案:
- 使用
service
命令。 - 直接检查进程或日志文件。
- 使用
-
问题3:服务已运行但无法访问
- 检查防火墙:
sudo ufw status
(Ubuntu)或firewall-cmd --list-ports
(CentOS)。 - 验证端口监听:
ss -tulnp | grep <端口>
。
- 检查防火墙:
总结建议
场景 | 推荐命令 |
---|---|
现代 Linux 发行版 | systemctl status <服务名> |
旧版系统(如 CentOS 6) | service <服务名> status |
服务无响应 | 检查进程 (ps aux \| grep <服务> ) 和日志 (journalctl ) |
端口访问问题 | 结合 ss 或 netstat 验证端口 |
重要提示:
- 操作需
root
权限(命令前加sudo
)。- 不同发行版路径可能差异(如日志位置),参考官方文档。
- 定期备份配置文件和日志,避免误操作导致数据丢失。
通过以上方法,您可以高效查询和管理 Linux 服务,如需深入细节,请查阅发行版手册(如 Ubuntu Systemd 文档 或 Red Hat 服务管理指南)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9391.html