插件窝 干货文章 linux服务进程状态怎么查看

linux服务进程状态怎么查看

服务 进程 bash 查看 613    来源:    2025-05-14

在 Linux 系统中,可以通过多种方式查看服务进程的状态。以下是常用的方法和工具:


1. systemctl 命令(Systemd 系统)

适用于大多数现代 Linux 发行版(如 Ubuntu 18.04+、CentOS 7+):

systemctl status <服务名>  # 查看特定服务的状态(如 nginx、sshd)
systemctl is-active <服务名>  # 仅检查服务是否运行
systemctl list-units --type=service  # 列出所有系统服务

示例:

systemctl status nginx

输出会显示服务是否活跃(active (running))、日志片段以及进程 PID。


2. service 命令(旧版 SysV Init 系统)

适用于传统 SysV 系统(如 CentOS 6):

service <服务名> status

示例:

service httpd status

3. ps 命令(查看进程详情)

通过进程名或 PID 直接查看进程状态:

ps aux | grep <进程名>  # 模糊匹配进程(如 nginx、mysql)
ps -p <PID> -o stat    # 查看特定进程的状态(如 S=休眠, R=运行, Z=僵尸)

示例:

ps aux | grep sshd

4. top / htop 命令(实时进程监控)

  • top:动态显示所有进程的资源占用(按 q 退出)。
  • htop(需安装):增强版 top,支持颜色和交互操作。
top
htop

5. journalctl 查看服务日志

针对 Systemd 管理的服务,查看详细日志:

journalctl -u <服务名>      # 查看服务全部日志
journalctl -u nginx --since "2023-01-01" --until "2023-01-02"

6. netstat / ss 查看服务端口

确认服务是否监听端口:

sudo netstat -tulnp | grep <端口或服务名>
# 或使用更快的 `ss`:
sudo ss -tulnp | grep ssh

常见进程状态说明

  • R (Running):运行中
  • S (Sleeping):休眠(等待事件)
  • D (Uninterruptible Sleep):不可中断的休眠(通常为 IO 操作)
  • Z (Zombie):僵尸进程(需父进程回收)
  • T (Stopped):已暂停(如通过 kill -STOP

故障排查技巧

  1. 如果服务未运行,检查日志: bash journalctl -xe
  2. 检查依赖项: bash systemctl list-dependencies <服务名>
  3. 强制重启服务: bash systemctl restart <服务名>

根据你的发行版和服务管理方式选择合适的方法。如果是容器化环境(如 Docker),则需使用 docker pskubectl get pods 等命令。