linux如何查询进程

Linux系统中,进程是程序执行的基本单位,系统通过管理进程来实现多任务并发处理,无论是排查系统故障、监控资源使用,还是终止异常进程,查询进程都是运维和开发人员的必备技能,Linux提供了多种命令和工具来查询进程,每种工具都有其特点和适用场景,本文将详细介绍这些方法及其使用技巧。

linux如何查询进程

基础进程查询命令:ps

ps(process status)是最常用、最基础的进程查看命令,它可以静态地显示当前进程的快照,适合快速获取特定进程的信息。

基本语法

ps [选项]

常用选项及示例

  • ps aux:显示所有进程的详细信息,包括用户、CPU占用率、内存占用率等。
    输出列说明:

    • USER:进程所有者
    • PID:进程ID
    • %CPU:CPU占用率
    • %MEM:内存占用率
    • VSZ:虚拟内存大小(KB)
    • RSS:常驻集大小(物理内存占用,KB)
    • TTY:终端类型
    • STAT:进程状态(如S=休眠,R=运行,Z=僵死)
    • START:启动时间
    • TIME:累计CPU时间
    • COMMAND:启动命令

    示例:

    ps aux | grep nginx

    此命令可筛选出所有与nginx相关的进程,常用于检查服务是否运行。

  • ps -ef:以全格式显示所有进程,包含父进程ID(PPID),适合查看进程的父子关系。
    输出列说明:

    • UID:用户ID
    • PID:进程ID
    • PPID:父进程ID
    • C:CPU调度器优先级
    • STIME:启动时间
    • TTY:终端
    • TIME:累计CPU时间
    • CMD:启动命令

    示例:

    ps -ef | grep "sshd"

    可查看SSH服务的进程及其父进程(通常为init/systemd)。

动态进程监控:top与htop

ps只能查看静态快照,若需实时监控进程状态(如CPU/内存动态变化),需使用top或其增强版htop

top命令

top以全屏交互方式动态显示进程,默认按CPU占用率排序,每3秒刷新一次。

  • 基本语法

    top [选项]
  • 常用选项

    • -d 秒数:设置刷新间隔(如top -d 2每2秒刷新)。
    • -p PID:监控指定进程(如top -p 1234)。
  • 交互操作

    • M:按内存占用率排序
    • P:按CPU占用率排序(默认)
    • k:终止指定进程(需输入PID)
    • q:退出top
  • 输出说明
    顶部为系统整体信息(运行时间、任务数、CPU/内存使用率),下方为进程列表。

    linux如何查询进程

htop命令

htoptop的增强版,提供更直观的界面(如颜色区分、进程树、鼠标操作),需单独安装(apt install htop/yum install htop)。

  • 特点

    • 支持垂直/水平分屏查看多个进程
    • 通过F2键打开设置菜单,自定义显示列
    • F9键快速终止进程,支持信号选择(如SIGKILL、SIGTERM)
    • F3搜索进程,F4过滤进程
  • 示例

    htop --sort-cpu  # 按CPU占用率排序启动

按条件筛选进程:pgrep与pidof

若需通过进程名、用户、端口等条件快速获取进程ID(PID),pgreppidof更高效。

pgrep

pgrep根据进程属性匹配进程,返回符合条件的PID。

  • 基本语法

    pgrep [选项] 进程名
  • 常用选项

    • -f:匹配完整命令行(如pgrep -f "nginx -c"
    • -u 用户名:匹配指定用户的进程(如pgrep -u root
    • -l:显示进程名而不仅是PID(如pgrep -l nginx
  • 示例

    pgrep -f "mysqld"  # 查找MySQL服务进程的PID

pidof

pidof仅通过进程名查找PID,适合简单场景。

  • 示例
    pidof nginx  # 返回nginx主进程的PID

查看进程树:pstree

进程树可直观展示进程间的父子关系,帮助理解服务依赖结构。

  • 基本语法

    pstree [选项]
  • 常用选项

    • -p:显示进程PID(如pstree -p | grep systemd
    • -h:高亮当前进程
    • -u:显示用户名
  • 示例

    linux如何查询进程

    pstree -p  # 以树状图显示所有进程及其PID

查看进程打开的文件:lsof

lsof(list open files)可查看进程打开的文件、网络连接等,常用于排查端口占用或文件锁定问题。

  • 基本语法

    lsof [选项] [文件/目录/端口]
  • 常用选项

    • -i 端口:查看占用指定端口的进程(如lsof -i :80
    • -p PID:查看指定进程打开的文件(如lsof -p 1234
    • -u 用户名:查看指定用户的进程打开的文件(如lsof -u mysql
  • 示例

    lsof -i :3306  # 查看MySQL默认端口3306的占用情况
    lsof /var/log/nginx/access.log  # 查看访问日志文件被哪些进程打开

查看系统服务进程:systemctl

对于systemd管理的系统服务,systemctl可查看服务状态及其关联进程。

  • 基本语法
    systemctl status 服务名.service
  • 示例
    systemctl status sshd.service  # 查看SSH服务状态及进程信息

    输出中包含Main PID(主进程ID)和CGroup(进程资源限制路径)。

常用进程查询命令对比

命令 功能描述 常用选项 典型场景
ps 静态查看进程快照 aux, -ef, –sort 快速获取特定进程信息
top 动态监控进程资源 -d, -p, 交互式操作(M/P/k) 实时观察CPU/内存占用高的进程
htop 增强版动态监控 –sort-cpu, –sort-mem, F2/F3/F9 交互式进程管理与分析
pgrep 按条件筛选进程PID -f, -u, -l 脚本中快速获取进程ID
pstree 查看进程树结构 -p, -h, -u 分析进程依赖关系
lsof 查看进程打开的文件 -i, -p, -u 排查端口占用、文件锁定问题
systemctl 查看系统服务进程 status, list-units 管理systemd服务状态

相关问答FAQs

Q1: 如何快速找到并终止占用CPU最高的进程?
A: 可通过以下步骤操作:

  1. 使用tophtop按CPU占用率排序:
    top -o %CPU  # top命令按CPU排序
    # 或 htop --sort-cpu  # htop按CPU排序
  2. 记录占用率最高的进程PID(通常位于列表顶部)。
  3. 使用kill命令终止进程:
    kill -9 PID  # -9表示强制终止(SIGKILL信号),适用于普通kill无效的僵死进程
    # 或 kill PID  # 默认SIGTERM信号,允许进程清理资源后退出

    也可直接在htop中使用F9键终止进程。

Q2: 如何查看某个进程的详细信息和子进程?
A: 可结合pspstreels -l /proc/PID查看:

  1. 通过pgrepps获取进程PID:
    pgrep -f 进程名  # pgrep -f "java"
  2. 查看进程详细信息(包括环境变量、文件描述符等):
    ls -l /proc/PID  # ls -l /proc/1234

    其中/proc/PID/environ为进程环境变量,/proc/PID/fd为打开的文件描述符。

  3. 查看进程的子进程:
    ps -ef --ppid PID  # ps -ef --ppid 1234,显示PID为1234的子进程
    pstree -p PID      # pstree -p 1234,以树状图显示子进程关系

    对于多线程进程,可通过ps -eLf -p PID查看线程信息。

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

(0)
酷番叔酷番叔
上一篇 2025年9月16日 13:12
下一篇 2025年9月16日 13:28

相关推荐

  • Linux如何删除进程?方法步骤与疑问解答

    在Linux系统中,进程是程序执行的实例,每个进程都有唯一的进程ID(PID)和父进程ID(PPID),当进程出现异常(如卡死、占用过多资源或不再需要)时,需要手动删除进程以确保系统稳定运行,本文将详细介绍Linux中删除进程的多种方法、适用场景及注意事项,进程删除的基本原理删除进程的本质是向进程发送信号(Si……

    2025年9月21日
    7400
  • Linux库如何正确添加?高效开发必备技巧

    库的类型与识别静态库(.a 文件)编译时直接嵌入程序,生成独立可执行文件,命名格式:libxxx.a(如 libmath.a),动态库(.so 文件)运行时加载,多个程序共享,节省资源,命名格式:libxxx.so(如 libmath.so.1.0),添加库的4种方法方法1:复制到标准库路径(推荐系统级使用)步……

    2025年7月24日
    8900
  • Linux中如何查看进程的PID?具体操作步骤有哪些?

    在Linux系统中,进程是程序执行的动态实例,每个进程都被分配一个唯一的进程标识符(PID),用于系统内核对进程的管理、调度和资源分配,查看进程PID是系统运维、程序调试和日常管理的基础操作,掌握多种查看方法能根据不同场景灵活选择工具,本文将详细介绍Linux中查看进程PID的常用命令、进阶技巧及实用示例,基础……

    2025年8月23日
    7200
  • 在 RHEL 7 和 Fedora 上关闭 firewalld 是否安全?

    在Linux系统中,防火墙是保护系统安全的关键组件,但某些场景(如调试网络服务、测试环境配置)可能需要临时关闭,操作前务必注意:关闭防火墙会暴露系统安全风险,仅建议在受控环境或明确需求下执行,完成后应立即恢复, 以下是针对不同防火墙工具的关闭方法:firewalld 是 Red Hat 系列发行版的默认防火墙工……

    2025年7月23日
    8700
  • Linux系统如何彻底卸载Qt及相关依赖组件?

    在Linux系统中卸载Qt需要根据安装方式选择不同方法,常见的安装途径包括包管理器安装(如apt、yum、dnf)、源码编译安装以及Snap/Flatpak等第三方安装器,卸载前需确认Qt的安装路径和相关组件,避免残留文件影响系统,以下是详细卸载步骤和注意事项,卸载前准备确认Qt版本及安装方式打开终端,输入以下……

    2025年10月1日
    5900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信