当前位置:首页 > Linux > 正文

Linux如何查服务状态

使用 systemctl status 服务名 查看 Systemd 服务的运行状态。 ,对于 SysVinit 系统,可用 service 服务名 status。 ,通用方法: ps aux | grep 服务名 查找相关进程及其 PID。

使用 ps 命令(基础查看)

ps(Process Status)是最直接的进程查看工具,通过过滤特定关键词定位服务:

ps aux | grep <服务名>
  • 参数解释
    • a:显示所有用户进程
    • u:显示进程的详细用户/资源占用
    • x:包括未关联终端的进程(如后台服务)
  • 示例(查看Nginx服务):
    ps aux | grep nginx

    输出解读

    root      1234  0.0  0.1  12345  6789 ?        S    Jan01   0:00 nginx: master process
    www-data  5678  0.0  0.2  23456  9876 ?        S    Jan01   0:05 nginx: worker process

    第一列为启动用户,第二列为进程ID(PID),最后一列为进程名称。


使用 systemctl 命令(Systemd系统专用)

现代Linux发行版(如Ubuntu 16.04+、CentOS 7+)默认使用systemd管理服务:

Linux如何查服务状态  第1张

systemctl status <服务名>.service  # 查看状态及关联进程
systemctl list-units --type=service  # 列出所有服务
  • 示例
    systemctl status sshd.service

    输出关键信息

    Active: active (running) since Tue 2025-01-01 00:00:00 UTC; 1 months 0 days ago
    Main PID: 1234 (sshd)
        Tasks: 1 (limit: 4915)

    直接显示进程状态、PID及日志片段。


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

旧版系统(如CentOS 6)或兼容脚本使用service

service <服务名> status
  • 示例
    service httpd status

    输出httpd (pid 1234) is running...


使用 tophtop(实时动态监控)

  1. top:实时显示进程资源占用(CPU、内存等)
    top -c  # 显示完整命令
    按 Shift + P 按CPU排序 | Shift + M 按内存排序
  2. htop(需安装):增强版交互式工具
    sudo apt install htop  # Debian/Ubuntu
    sudo yum install htop  # CentOS/RHEL
    htop

    支持鼠标点击排序、树状展开进程层级。


通过端口反查服务进程

若知道服务端口,可用网络工具定位进程:

  1. netstatss
    sudo netstat -tulnp | grep :80  # 查看80端口进程
    sudo ss -tulnp | grep :22       # 更高效的替代命令
    • -p:显示进程名和PID
    • -l:仅监听中的端口
  2. lsof
    sudo lsof -i :3306  # 查看MySQL默认端口

使用 pgrep 快速获取进程ID

通过进程名直接查询PID:

pgrep -l nginx  # 输出示例:1234 nginx
  • -l:同时显示进程名称
  • -x:精确匹配进程名

️ 注意事项

  1. 权限问题:查看非当前用户的进程需sudo提权。
  2. 进程名匹配grep可能包含自身命令(如grep nginx),用grep -v grep过滤:
    ps aux | grep nginx | grep -v grep
  3. 服务类型区分
    • systemd系统优先用systemctl(服务名如nginx.service
    • 传统系统用service/etc/init.d/<服务名> status
  4. 谨慎操作:避免随意终止进程(kill),可能影响服务可用性。

总结建议

场景 推荐命令
快速检查服务状态 systemctl statusservice
查看进程资源占用 tophtop
根据端口定位服务 ss -tulnplsof -i
批量管理/精确查询 pgreppkill

引用说明

  • Linux man 手册(命令行输入 man psman systemctl 查看官方文档)
  • IBM Developer: Linux 进程管理指南
  • The Linux Documentation Project (TLDP)
  • Systemd 官方文档:https://www.freedesktop.org/wiki/Software/systemd/
0