你的浏览器里是不是至少打开了五个其他标签页,想要找到 Linux 问题的答案?
这种行为不仅限于你或一般人类。机器也在进行多任务处理。就像你一样,Linux 也是多任务处理器,同时运行着多个进程。无论你是专业使用 Linux 的开发者,还是在日常工作中使用 Linux 的普通用户,你都应该能够理解这些并行进程,以便完全控制你的系统。进程管理和系统控制是运行 Linux 系统的重要方面。
要有效地管理系统上运行的进程、实时查看发生的情况、对所有后台进程有个大致了解,以及控制系统资源,你需要具备进程管理的技术知识。ps aux 命令是一个强大的命令,在进程管理和系统控制中发挥关键作用。在这篇文章中,我们将深入了解 ps aux 命令及其用途。我们还将介绍 Linux 进程如何工作的基础知识。
理解 Linux 中的进程管理
使用 Linux 时,我们与系统的大部分交互都是通过命令进行的。在 Linux 中,进程是命令的执行。Linux 进程管理涉及操纵命令已启动的进程。你可以终止进程、启动进程或恢复那些已被终止的进程。你也可以操纵正在进行中的命令。
Linux 进程有两种类型:
- Foreground processes
- Background processes
Linux 前台进程
前台进程是正在主动执行的进程,通常需要与用户进行持续的实时交互。当前台进程在执行时,其他进程的执行会被暂停。因此,你无法运行任何其他命令。前台进程从键盘接收标准输入或 stdin。为了避免进一步混淆,stdin 和 stdout 是 Linux 数据流,还有 stderr。这基本上是用户与进程交互和为其提供数据的方式。还有标准输出或 stdout,它由进程根据其功能和输入生成。前台进程是 Linux 中的默认执行模式。
Linux 后台进程
后台进程与前台进程完全相反,因为它们不需要用户交互,也不会独占终端的完整空间,允许其他进程的执行。后台进程的输入和输出类型也不同。它们通常不接收 stdin。但是,进程的结果可以显示为 stdout。后台进程的输出显示与其他前台进程的输出同时进行。因此,你可以看到后台进程的进度或结果,而不会中断其他重要操作。
由于在 Linux 中执行各种任务都依赖于命令行,前台进程可能会很麻烦,而在后台运行进程可以使你的终端空闲来处理其他任务。因此,将前台任务放在后台是合理的做法。为了 将进程发送到后台 你应该首先停止它在前台执行。这只需按 CTRL+Z 即可完成。然后输入 bg 命令,被终止的进程将在后台重新运行。fg 命令将反转此过程并将其带回前台。
进程状态、语法、命令和输出解释
Linux 中的有效进程管理需要理解可由 ps aux 命令监控的进程状态。但在深入了解 ps aux 命令之前,让我们先了解不同的进程状态。虽然有多种进程和进程状态类型,但这是最常见的表格:
| Process status | description | |
| Running(R) | 进程当前正在运行并占用 CPU 资源。 | |
| Sleeping | Interruptible (S) | 进程正在等待特定的输入或事件以重新开始运行。它当前不使用 CPU 资源。当资源可用或发送信号时,进程会重新启动。 |
| Uninterruptible (D) | 就像处于可中断睡眠状态的进程一样,不可中断睡眠进程不使用 CPU 资源。唯一的区别是它不对信号做出反应,只有在资源可用时才会重新启动。 | |
| Stopped(T) | 用户输入或特定事件已暂停进程。处于停止状态的进程不使用任何 CPU 资源。 | |
| Dead(X) | 进程已被终止,不复存在。 | |
对这些进程状态的深入理解是有效管理和排查 Linux 系统问题的重要方面。现在,让我们介绍在 Linux 中获取进程状态的语法和命令,以及如何解释输出。
语法和命令获取进程状态
您可以在 Linux 上使用 ps 命令的基本语法获取进程状态:
ps [process name]
ps 命令还有其他选项可以使用:
aux: 此选项显示系统上运行的所有进程的完整列表。它提供进程 ID (PID)、父进程 ID (PPID)、CPU 和内存使用情况、进程状态等信息。ps aux 命令的输出格式更整洁,可读性更强,比基础 ps 命令包含更多有用信息。
ef: 此选项以完整格式列出进程及其额外详情,包括树状结构的进程层级关系。
l: 此选项提供详细的长格式列表,显示有关进程的更多信息。
理解输出结果
运行带有所需选项的 ps 命令时,它会生成一个表示系统上当前运行进程的输出。输出包含多列,显示不同的进程属性,包括进程 ID (PID)、父进程 ID (PPID)、CPU 使用情况、内存使用情况、进程状态、终端类型和命令名称。
以下是每列含义的说明:
PID: 此列显示进程的唯一 ID。
TTY: 此列显示用户登录的终端类型。
TIME: 此列表示该进程使用的 CPU,以分钟和秒显示。
CMD: 此列显示启动该进程的命令名称。
分析 ps 命令提供的信息可以让您更深入地了解 Linux 机器的行为。
使用 ps 命令进行进程管理的高级技巧
让我们探索 ps 命令的一些高级功能及其有效使用方式:
1. Process Sorting
ps aux 命令可用于根据不同列对最终输出进行排序。例如,您可以按进程 ID 或 CPU 使用情况对进程进行排序,以所需的顺序查看它们。
以下是按进程 ID 使用 ps aux 排序进程的示例:
ps aux –-sort pid
head 命令用于仅获取输出的前五行。

2. 进程树可视化
如果要清楚地看到进程的父子关系,可以使用带有 forest 选项的 ps 命令。
ps -aux --forest

要以树状模式查看进程之间的关系,也可以使用 pstree 命令。此命令将生成更易理解的输出,完美展示进程之间的层级关系。要使用此命令,输入以下命令:
pstree [pid or username]
通过为此命令提供一个 PID,您可以告诉该命令将该进程视为树的根。
3. Filtering Processes
假设你想处理特定的一组进程,比如列出某个用户的所有进程。可以使用 ps 命令根据某个特征过滤进程。在这个例子中,我们按用户名对进程进行了过滤。
ps -u [username]

ps aux grep 命令可以根据您提供给命令的任何模式或关键词过滤进程。下面是一个例子:

这条命令会列出所有进程,然后把输出传给 grep 命令,根据进程 ID 过滤这个长列表。在上面的图片中,你可以看到所有信息里包含数字 15 的进程列表。
如果你想了解 ps 命令的更多信息和功能,可以查看该命令的手册。下面的代码会为你显示手册页面:
man ps
在 Linux 中管理任务优先级
In order to better explain how process management actually works in Linux, we should also cover process priority and how to change it. Imagine a situation in which you’re running several processes, and the CPU is overloaded with tasks. If you want to manage your resources to work properly in this situation, you need to change the priority of the running tasks. Each process in Linux has a priority value. This value helps the kernel to prioritize tasks. The priority number ranges from -20 to 19, with 19 being the least important task and -20 being the most urgent one. The process with the highest priority receives more CPU time compared to other processes. The priority values are often referred to as “nice” values, with lower nice values showing higher priority.
使用 nice 和 renice 命令可以有效地分配系统资源。
不过在改变进程优先级之前,让我们先看看 ps 命令的第一个使用场景。
- 使用 ps 命令显示所有进程的当前优先级:
该命令列出所有进程及其进程 ID (PID)、命令名称和当前优先级 (nice 值):
ps -eo pid,cmd,nice

- 使用 nice 命令以默认高优先级启动进程:
使用以下命令可以按你喜欢的优先级启动进程:
nice -n [priority] [command]
将 [priority] 替换为代表优先级的负数值,将 [command] 替换为要执行的命令。
Here’s an example:

- 更改已在运行的命令的优先级:
renice -n [priority] -p [PID]
将你要操作的进程 ID 替换为 [PID]。
如果你想要一台功能强大的 Linux 机器来处理各种任务, Linux VPS 是您的最佳选择。 Cloudzy 提供多种 Linux VPS 方案,可预装你选择的发行版。凭借 24/7 支持、30 天退款保证和 99.95% 正常运行时间保证等优势,Cloudzy 始终保持低廉的价格。我们的 Linux VPS 方案起价仅为 $4.95/月。
选择经济版或高级 Linux VPS 来托管网站或远程桌面,价格最低。VPS 运行在 Linux KVM 上,效率更高,采用强大硬件和 NVMe SSD 存储,速度更快。
Read MoreConclusion
总的来说,掌握进程管理和系统控制对系统管理员、热衷于深入学习的 Linux 爱好者以及普通 Linux 用户来说至关重要。了解 ps 命令的功能和用途可以帮助你更好地学习进程管理。本文介绍了 ps 命令的重要使用场景,并为读者提供了 Linux 进程的基础入门知识。
FAQ
Linux 中的 ps aux 命令是什么?
ps aux 命令是 Linux 中常用的命令,用于获取正在运行的进程信息。它以用户友好的格式提供进程的完整列表,包括进程 ID (PID)、CPU 和内存使用情况、执行状态及其他关键细节。
Linux 中有哪两种类型的进程?
前台进程和后台进程。前台进程占用终端,运行时不允许其他执行。后台进程在后台运行,不会占用整个终端。
如何查看 Linux 系统上运行的进程列表?
可以使用 ps、top 或 htop 等命令查看 Linux 系统上运行的进程列表。例如,Linux ps aux 命令可以提供所有正在运行的进程的详细信息。