Linux中进程的查看ps top pstree

发布于:2025-09-12 ⋅ 阅读:(22) ⋅ 点赞:(0)

进程的定义

进程(Process)是操作系统进行资源分配和调度的基本单位,是程序的一次执行过程。 可以将进程理解为一个正在运行的程序的实例。当一个程序(例如一个 .exe 文件)被启动时,操作系统会为其创建一个进程。

进程具有以下关键特性:
• 独立的内存空间:每个进程都拥有自己独立的虚拟地址空间,包括代码段、数据段、堆和栈。这意味着一个进程通常不能直接访问另一个进程的内存数据,保证了进程间的隔离性和安全性。
• 资源拥有者:进程是系统资源(如内存、文件句柄、网络连接、I/O设备等)的拥有者。操作系统将这些资源分配给进程进行管理。
• 执行上下文:进程包含其运行所需的所有信息,如程序计数器(PC)、寄存器状态、堆栈、打开的文件列表、环境变量等。这些信息共同构成了进程的“上下文”。
• 生命周期:进程有明确的生命周期,包括创建(fork/exec)、运行、等待(阻塞)、就绪和终止(退出)等状态。 简单来说,进程 = 程序 + 执行上下文 + 资源

进程与线程的关系

进程和线程的联系

线程(Thread)是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。

可以把进程想象成一个公司,而线程就是公司里的员工。公司(进程)拥有所有的资源(办公室、设备、资金),而员工(线程)则使用这些资源来完成具体的工作。

1. 核心联系
  • 包含关系:一个进程至少包含一个线程(主线程),也可以包含多个线程。这些线程共享该进程的资源。
  • 资源共享:同一个进程内的所有线程共享该进程的内存地址空间和资源(如文件描述符、全局变量等)。这使得线程间的通信和数据交换非常高效。
  • 并发执行:一个进程内的多个线程可以并发(在单核CPU上)或并行(在多核CPU上)执行,从而提高程序的执行效率,尤其是在处理I/O密集型或需要同时响应多个任务的场景中。
2. 主要区别
特性 进程 (Process) 线程 (Thread)
资源拥有 拥有独立的资源(内存空间、文件等) 共享所属进程的资源
内存空间 独立的地址空间,互不访问 共享进程的地址空间,可直接访问彼此的数据
创建开销 较大(需要分配资源、建立独立空间) 较小(只需创建栈和寄存器等少量资源)
通信方式 复杂(需使用IPC:管道、消息队列、共享内存等) 简单(通过共享变量、直接函数调用等)
独立性 独立运行,一个进程崩溃通常不影响其他进程 依赖进程,一个线程崩溃可能导致整个进程终止
调度单位 操作系统调度的基本单位之一 CPU调度的最小单位
切换开销 较大(涉及内存空间切换) 较小(在同一进程内切换,无需切换地址空间)
3. 举例说明
  • 浏览器:一个现代浏览器(如Chrome)通常会为每个标签页(或扩展程序)创建一个独立的进程。这样,一个标签页崩溃不会导致整个浏览器关闭。而在一个标签页内部,可能会有多个线程,比如一个线程负责渲染页面,一个线程负责执行JavaScript,一个线程负责处理网络请求,它们共享该标签页进程的内存和资源。
  • 文本编辑器:一个文本编辑器是一个进程。它内部可能有一个线程用于处理用户输入,一个线程用于自动保存,一个线程用于语法检查,这些线程协同工作,但共享编辑器的文档数据。

进程是资源分配的单位,提供了运行环境;线程是CPU调度的单位,是在这个环境里实际干活的“工人”。多线程允许一个进程内的任务并发执行,提高了效率,但也带来了线程同步(如使用锁)等复杂性问题。选择使用多进程还是多线程,需要根据具体的应用场景(如对稳定性、性能、通信复杂度的要求)来权衡。

查看进程的基本命令

ps

在这里插入图片描述

ps -e | more 命令输出的解释

1. 命令作用
  • ps -e: 列出当前系统中所有正在运行的进程(包括前台和后台进程)。
  • | more: 将输出内容分页显示,方便逐屏查看(按空格键翻页,按 q 退出)。

2. 输出列含义
列名 含义
PID 进程的唯一标识符(Process ID)。
TTY 进程关联的终端设备(? 表示无终端)。
TIME 进程已占用的 CPU 时间(格式:分钟+秒)。
CMD 启动进程的命令名称或路径。

3. 关键进程说明
  • systemd (PID 1)
    系统初始化进程,负责启动和管理系统服务。

  • kthreadd (PID 2)
    内核线程守护进程,动态创建和管理内核线程。

  • ksoftirqd/[CPU编号]
    处理软中断(如网络、磁盘 I/O)的内核线程,数字表示 CPU 核心。

  • kworker/[CPU:队列]
    执行内核异步任务的线程(如设备驱动操作),H 表示高优先级任务。

  • migration/[CPU]
    负责将进程从一个 CPU 核心迁移到另一个核心,优化负载均衡。

  • rcu_* 线程
    支持 RCU(Read-Copy Update)机制,用于内核并发同步。

  • watchdog/[CPU]
    监控系统响应状态,防止 CPU 挂起。

  • kdevtmpfs
    管理 tmpfs 临时文件系统的内核线程。

  • khungtaskd
    检测并处理长时间无响应的进程。

在这里插入图片描述

关于“表名”的解释

ps -ef | more 命令的输出并非数据库表,而是一个进程状态列表。以下是关键信息说明:


2. ps -ef 输出的列含义
列名 含义
UID 运行进程的用户 ID(如 root)。
PID 进程唯一标识符(Process ID)。
PPID 父进程的 PID(用于追踪进程层级)。
C 进程的 CPU 使用优先级(nice 值)。
STIME 进程启动时间(格式:HH:MM 或日期)。
TTY 关联的终端设备(? 表示无终端)。
TIME 进程累计占用的 CPU 时间。
CMD 启动进程的命令及其参数。

在这里插入图片描述

** ps -eLf 输出的列含义**

在这里插入图片描述

ps -eLf 命令输出的详细解释

您提供的命令输出展示了 Linux 系统中运行进程的详细信息。以下是各列的具体含义和示例行的解释:


1. 列名及含义
列名 含义
UID 进程所属用户的 ID(如 root)。
PID 进程唯一标识符(Process ID)。
PPID 父进程的 PID(用于追踪进程层级)。
LWP 轻量级进程(线程)的数量。
C 进程的 CPU 使用优先级(nice 值)。
NLWP 进程中的线程数。
STIME 进程启动时间(格式:HH:MM 或日期)。
TTY 关联的终端设备(? 表示无终端)。
TIME 进程累计占用的 CPU 时间。
CMD 启动进程的命令及其参数。

2. 示例行解释

以以下行为例:

root      1      0  1 0 1 15:07 ?        00:00:01 /usr/lib/systemd/systemd --switched-root ...
  • UID: root 表示该进程由 root 用户运行。
  • PID: 1 是系统第一个进程,通常是 systemd 初始化进程。
  • PPID: 0 表示没有父进程,是系统的顶级进程。
  • LWP: 1 表示该进程只有一个轻量级进程(主线程)。
  • C: 0 表示进程的优先级为默认值。
  • NLWP: 1 表示该进程有一个线程。
  • STIME: 15:07 表示该进程在当天 15:07 启动。
  • TTY: ? 表示该进程没有关联的终端。
  • TIME: 00:00:01 表示该进程已占用 CPU 1 秒。
  • CMD: /usr/lib/systemd/systemd --switched-root ... 表示启动该进程的命令及其参数。

3. 关键进程说明
  • systemd (PID 1)
    系统初始化进程,负责启动和管理系统服务。

  • kthreadd (PID 2)
    内核线程守护进程,动态创建和管理内核线程。

  • ksoftirqd/[CPU编号]
    处理软中断(如网络、磁盘 I/O)的内核线程,数字表示 CPU 核心。

  • kworker/[CPU:队列]
    执行内核异步任务的线程(如设备驱动操作),H 表示高优先级任务。

  • migration/[CPU]
    负责将进程从一个 CPU 核心迁移到另一个核心,优化负载均衡。

  • rcu_* 线程
    支持 RCU(Read-Copy Update)机制,用于内核并发同步。


top

参数解释
在这里插入图片描述

top 命令输出的详细解释

您提供的图片显示了 Linux 系统中运行进程的实时监控信息,通过 top 命令获取。以下是各部分的具体含义和示例行的解释:


1. 顶部系统状态行
top - 15:38:59 up 31 min, 2 users, load average: 全网首发 防止截屏 请加微信:171614 3665
  • 时间: 15:38:59 表示当前系统时间。
  • 运行时长: up 31 min 表示系统已运行 31 分钟。
  • 用户数: 2 users 表示当前有 2 个用户登录。
  • 负载平均值: load average 后面的内容被广告信息覆盖,通常显示过去 1、5、15 分钟的系统负载平均值。

2. 系统资源使用情况
Tasks: 214 total,   1 running, 213 sleeping,   0 stopped,   0 zombie JeffreyBool
%Cpu(s): 12.1 us,  9.1 sy,  0.0 ni, 78.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 2042432 total,  721572 free,  574476 used,  746384 buff/cache
KiB Swap: 2097148 total, 2097148 free,        0 used. 1268200 avail Mem
  • 任务统计:

    • total: 总进程数(214)。
    • running: 正在运行的进程数(1)。
    • sleeping: 处于睡眠状态的进程数(213)。
    • stopped: 被停止的进程数(0)。
    • zombie: 僵尸进程数(0)。
  • CPU 使用率:

    • us: 用户态 CPU 使用率(12.1%)。
    • sy: 内核态 CPU 使用率(9.1%)。
    • ni: 用户自定义优先级的 CPU 使用率(0.0%)。
    • id: 空闲 CPU 百分比(78.8%)。
    • wa: 等待 I/O 的 CPU 百分比(0.0%)。
    • hi: 硬中断处理时间百分比(0.0%)。
    • si: 软中断处理时间百分比(0.0%)。
    • st: 被虚拟化环境偷走的时间百分比(0.0%)。
  • 内存使用情况:

    • total: 总内存大小(2042432 KiB)。
    • free: 空闲内存大小(721572 KiB)。
    • used: 已用内存大小(574476 KiB)。
    • buff/cache: 缓冲区/缓存使用的内存大小(746384 KiB)。
  • 交换分区使用情况:

    • total: 总交换分区大小(2097148 KiB)。
    • free: 空闲交换分区大小(2097148 KiB)。
    • used: 已用交换分区大小(0 KiB)。
    • avail Mem: 可用内存大小(1268200 KiB)。

3. 进程列表
列名 含义
PID 进程唯一标识符(Process ID)。
USER 运行进程的用户名。
PR 进程的优先级(Priority)。
NI 进程的 nice 值(数值越大优先级越低)。
VIRT 进程使用的虚拟内存大小(KiB)。
RES 进程占用的物理内存大小(KiB)。
SHR 进程共享的内存大小(KiB)。
S 进程状态(S=睡眠,R=运行等)。
%CPU 进程占用的 CPU 百分比。
%MEM 进程占用的内存百分比。
TIME+ 进程累计占用的 CPU 时间。
COMMAND 启动进程的命令及其参数。

4. 示例行解释

以以下行为例:

4521 root     20   0 197984  4204  3064 S  6.2  0.2   0:01.33 cupsd
  • PID: 4521 是该进程的唯一标识符。
  • USER: root 表示该进程由 root 用户运行。
  • PR: 20 表示进程的优先级。
  • NI: 0 表示进程的 nice 值为默认值。
  • VIRT: 197984 表示进程使用的虚拟内存大小为 197984 KiB。
  • RES: 4204 表示进程占用的物理内存大小为 4204 KiB。
  • SHR: 3064 表示进程共享的内存大小为 3064 KiB。
  • S: S 表示进程处于睡眠状态。
  • %CPU: 6.2 表示进程占用的 CPU 百分比为 6.2%。
  • %MEM: 0.2 表示进程占用的内存百分比为 0.2%。
  • TIME+: 0:01.33 表示进程累计占用的 CPU 时间为 1.33 秒。
  • COMMAND: cupsd 表示启动该进程的命令是 cupsd


网站公告

今日签到

点亮在社区的每一天
去签到