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

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在 Linux 世界中,进程是驱动操作系统的基本构建块。对于系统管理员、开发人员以及任何想要有效管理和排查其 Linux 环境故障的人来说,理解 Linux 进程的概念和特性至关重要。本全面教程将引导你了解 Linux 进程的各个重要方面,从列出和监控正在运行的进程到管理和排查它们的故障。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/ProcessManagementandControlGroup(["Process Management and Control"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/ProcessManagementandControlGroup -.-> linux/kill("Process Terminating") linux/ProcessManagementandControlGroup -.-> linux/killall("Multi-Process Killing") linux/ProcessManagementandControlGroup -.-> linux/pkill("Pattern-Based Killing") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/top("Task Displaying") subgraph Lab Skills linux/kill -.-> lab-409868{{"如何在 Linux 中列出所有正在运行的进程及其 ID"}} linux/killall -.-> lab-409868{{"如何在 Linux 中列出所有正在运行的进程及其 ID"}} linux/pkill -.-> lab-409868{{"如何在 Linux 中列出所有正在运行的进程及其 ID"}} linux/ps -.-> lab-409868{{"如何在 Linux 中列出所有正在运行的进程及其 ID"}} linux/top -.-> lab-409868{{"如何在 Linux 中列出所有正在运行的进程及其 ID"}} end

理解 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 进程可以处于不同的状态,这些状态表示它们当前的执行状态。主要的进程状态有:

  1. 运行中:进程当前正在由 CPU 执行。
  2. 等待:进程正在等待某个事件发生,例如 I/O 操作或用户输入。
  3. 停止:进程已被暂时挂起,通常是通过信号或调试器。
  4. 僵尸:进程已终止,但其父进程尚未收集其退出状态。

进程标识

每个 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]

列出并监控正在运行的进程

在 Linux 环境中,有效管理和监控正在运行的进程是系统管理和故障排查的关键环节。Linux 提供了各种工具和命令,使你能够列出、检查和监控正在运行的进程的状态。

列出正在运行的进程

在 Linux 中,用于列出正在运行的进程的主要命令是 ps(进程状态)命令。ps 命令可以显示有关正在运行的进程的各种信息,例如它们的进程 ID(PID)、父进程 ID(PPID)、用户、CPU 和内存使用情况等等。

## 示例:列出所有正在运行的进程
$ 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]

ps 命令可以通过各种选项进行定制,以显示特定信息或根据你的需要过滤输出。

监控正在运行的进程

要监控正在运行的进程的状态和资源利用率,可以使用 top 命令。top 命令提供了正在运行的进程的实时交互式视图,显示诸如 CPU 和内存使用情况、进程 ID 等信息。

## 示例:使用 `top` 命令监控正在运行的进程

top 命令提供了系统的实时视图,使你能够监控和分析正在运行的进程的性能和资源利用率。

管理和排查进程故障

在 Linux 环境中管理和排查进程故障对于维护系统的稳定性、性能和安全性至关重要。Linux 提供了各种工具和命令,使你能够控制、监控和排查正在运行的进程。

终止进程

当一个进程无响应或需要停止时,你可以使用 kill 命令来终止它。kill 命令向目标进程发送一个信号,可用于停止、暂停或恢复该进程。

## 示例:使用 `kill` 命令终止一个进程
$ ps -ef | grep firefox
user 456 1 0 10:30? 00:00:15 /usr/bin/firefox
$ kill 456

kill 命令可以与不同的信号选项一起使用,以控制进程终止行为。

监控进程资源使用情况

如前所述,要监控正在运行的进程的资源使用情况,可以使用 top 命令。此外,htop 命令提供了一个增强的交互式进程监控界面,它能提供更详细的信息以及进程资源利用率的可视化展示。

## 示例:使用 `htop` 命令监控进程资源使用情况
$ htop

htop 命令会显示每个正在运行的进程的 CPU、内存和其他资源使用情况的实时信息,从而更易于识别和排查资源密集型进程。

排查进程故障

当一个进程的行为不符合预期时,你可以使用各种工具和技术来调查并解决问题。一些常见的排查方法包括:

  1. 分析进程日志:检查与有问题的进程相关的日志可以为问题的根本原因提供有价值的见解。
  2. 监控进程依赖关系:识别进程之间的依赖关系和关联有助于理解与进程相关问题的更广泛背景和潜在原因。
  3. 分析进程性能:像 perfstrace 这样的工具可用于分析特定进程的性能和行为。

通过理解并应用这些进程管理和排查技术,你可以有效地维护和优化 Linux 系统的性能与稳定性。

总结

本教程全面介绍了 Linux 进程,包括它们的层次结构、状态和标识。通过掌握列出、监控和管理进程的技术,你现在可以有效地优化和排查 Linux 系统故障,确保其平稳高效运行。有了这些知识,你可以将 Linux 管理技能提升到一个新水平,成为一名更熟练、更全能的系统管理员。