在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 ) |
网络服务验证 | 确认端口实际监听状态 |
最佳实践:
- 优先使用
systemctl status
(Systemd系统)或service status
(SysVinit系统)。- 进程消失但服务状态显示运行?用
journalctl
查日志。- 端口监听异常?检查防火墙或服务配置。
引用说明: 基于Linux官方文档(systemd.unit(5)、ss(8))及主流发行版运维实践,确保方法经过生产环境验证,操作时请注意权限要求(部分命令需sudo
)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9756.html