如何实时查看Nginx运行状态

在Linux系统中,查看服务是否启动是运维和开发的常见需求,以下是几种专业、可靠且高效的命令行方法,适用于不同发行版(如Ubuntu、CentOS、Debian等),所有操作均需在终端中执行:


使用 systemctl 命令(推荐,适用于Systemd系统)

适用场景:主流现代Linux发行版(Ubuntu 16.04+、CentOS 7+)
操作步骤

systemctl status 服务名

输出解析

  • Active: active (running) → 服务已启动
  • Active: inactive (dead) → 服务未运行
  • Loaded: loaded (...) → 服务已启用开机自启
  • Loaded: disabled (...) → 服务未设置开机自启

示例

# 仅显示状态摘要(简洁版)
systemctl is-active nginx  # 输出"active"或"inactive"

使用 service 命令(兼容SysVinit系统)

适用场景:旧版系统(如CentOS 6)或兼容性场景

service 服务名 status

示例

service sshd status
# 若返回 "Active: active (running)" 表示运行中

通过进程检查(通用方法)

使用 ps 命令搜索进程

ps aux | grep 服务名

关键点

  • 若输出中包含服务进程(如/usr/sbin/nginx),则服务已启动。
  • 使用grep -v grep排除干扰项:
    ps aux | grep nginx | grep -v grep

使用 pgrep 快速检查

pgrep -x 服务名  # -x确保精确匹配
  • 若返回进程ID(PID),则服务正在运行。

通过端口监听检查(网络服务专用)

若服务依赖端口(如Web服务、数据库),可用以下命令:

sudo netstat -tuln | grep :端口号
# 或
sudo ss -tuln | grep :端口号  #(ss命令更高效)

示例

# 检查80端口是否被Nginx监听
sudo ss -tuln | grep :80

检查服务日志(排查故障)

若服务状态异常,查看日志定位问题:

journalctl -u 服务名          # Systemd系统专用
tail -f /var/log/服务名.log   # 通用日志文件

总结与建议

方法 适用场景 优势
systemctl 现代Linux发行版(主流推荐) 信息全面,支持开机自启管理
service 旧版系统兼容 命令简洁
进程检查(ps) 所有系统,通用性强 不依赖服务管理器
端口检查(ss) 网络服务验证 确认端口实际监听状态

最佳实践

  1. 优先使用 systemctl status(Systemd系统)或 service status(SysVinit系统)。
  2. 进程消失但服务状态显示运行?用 journalctl 查日志。
  3. 端口监听异常?检查防火墙或服务配置。

引用说明: 基于Linux官方文档(systemd.unit(5)、ss(8))及主流发行版运维实践,确保方法经过生产环境验证,操作时请注意权限要求(部分命令需sudo)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9756.html

(0)
酷番叔酷番叔
上一篇 2025年8月6日 15:32
下一篇 2025年8月6日 16:16

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信