如何在 Linux 中列出所有正在运行的进程及其 ID

理解 Linux 进程 在 Linux 世界中,进程是驱动操作系统的基本构建块。进程是正在执行的计算机程序的一个实例,它在系统中管理和执行任务方面...

理解 Linux 进程

在 Linux 世界中,进程是驱动操作系统的基本构建块。进程是正在执行的计算机程序的一个实例,它在系统中管理和执行任务方面起着至关重要的作用。

对于系统管理员、开发人员以及任何想要有效管理和排查其 Linux 环境故障的人来说,理解 Linux 进程的概念和特性至关重要。

什么是 Linux 进程?

Linux 进程是计算机程序的一个正在运行的实例。当用户或系统组件启动一个程序时,操作系统会创建一个新进程来处理该程序的执行。每个进程都有自己的内存空间、资源和执行上下文,这些由 Linux 内核管理。

进程层次结构

Linux 进程以层次结构组织,其中每个进程都与一个父进程相关联。这种层次结构称为进程树或进程层次结构。第一个进程,称为 “init” 进程,是进程树的根,负责在系统中派生所有其他进程。

graph TD

init[init]

init --> process1[进程 1]

init --> process2[进程 2]

process1 --> subprocess1[子进程 1]

process1 --> subprocess2[子进程 2]

process2 --> subprocess3[子进程 3]进程状态

Linux 进程可以处于不同的状态,这些状态表示它们当前的执行状态。主要的进程状态有:

运行中:进程当前正在由 CPU 执行。

等待:进程正在等待某个事件发生,例如 I/O 操作或用户输入。

停止:进程已被暂时挂起,通常是通过信号或调试器。

僵尸:进程已终止,但其父进程尚未收集其退出状态。

进程标识

每个 Linux 进程都由一个唯一的进程 ID(PID)标识,PID 是一个整数值。PID 用于管理和与进程进行交互,例如发送信号、监控其状态或终止它。

进程的父进程由父进程 ID(PPID)标识,可用于了解系统中的进程层次结构和依赖关系。

## 示例:使用 `ps` 命令显示进程信息

$ ps -ef

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 Apr04? 00:00:05 /sbin/init

root 2 0 0 Apr04? 00:00:00 [kthreadd]

root 3 2 0 Apr04? 00:00:00 [rcu_gp]

root 4 2 0 Apr04? 00:00:00 [rcu_par_gp]