在 Linux 中使用 PS 命令显示线程
在现代操作系统中,线程作为一种流行的编程抽象。发生这种情况时,这些线程共享打开的文件、空间和内存地址等资源。它避免了进程间通信(昂贵的 IPC)通道并减少了分叉开销。结果,线程执行并发执行机制。
在 Linux 中,线程也称为 LWP 或轻量级进程。程序内创建的这些线程都有一个“线程组ID”,与程序的PID相同。为每个线程分配了一个单独的线程 ID (TID)。 Linux 内核中的调度程序线程共享一些资源,这些资源是标准进程。
除了默认显示进程级信息外,经典的命令行工具(例如top、ps)也可以显示线程级信息。 ps、top 和 htop 是经典命令,默认情况下会显示进程级信息。您还可以使用前面的命令查看线程级信息。本指南将仅介绍 ps 命令并解释 ps 命令如何在 Linux 中显示线程。
在 Linux 中使用 PS 命令显示线程
借助 ps 命令,您可以使用许多过滤器(如 PID(进程 ID)、应用程序名称等)查看线程。此命令在 BSD 或 macOS 上不起作用,因为没有选项可以显示线程和-t 参数有不同的含义。
让我们从终端中的以下命令开始,使用 ps 命令列出所有线程:
显示带有 PID 的线程
以下是使用 PID 查看线程的 ps 命令的标准语法:
ps -T p <pid>
-T | List all threads |
-p | Specifies the process ID |
您可以查看特定 PID 的线程。按照之前的标准语法,输入你想知道的线程的PID号。
例如,我们使用PID <1904>。语法如下:
ps -Tp 1904
“SPID”列显示先前输出中的线程 ID。 “CMD”列代表线程名称。
显示带有应用程序名称的线程
以下是使用应用程序名称查看线程的 ps 命令的标准语法:
Option | Description |
---|---|
-T | List all threads |
-C | Specifies the application name |
例如,让我们找出与 Bash 应用程序相关的线程。这是基本命令:
显示带有过滤器的线程
ps 命令的标准语法是使用过滤器查看线程,如下所示:
- -e
显示所有进程
- |
将输出传送到下一个命令
- grep
它借助
过滤内容
您可以通过应用程序名称过滤内容。键入并执行以下命令来完成它:
ps -e -T | grep bash
您还可以使用 PID 来过滤线程:
ps -e -T | 1904
在前面的输出中,您可能会注意到所有线程都具有相同的 PID。这意味着之前的所有线程都在同一个进程中。
要查找系统中所有正在运行的线程的总和,可以执行以下命令:
您可以使用“pgrep”或“pidof”来获取进程名称的进程ID:
或者
结论
在Linux中,线程是由程序使用“线程组ID”(如PID)创建的。有多种方法可以使用各种命令来显示 Linux 中的线程。在本指南中,我们解释了使用 ps 命令查看线程的不同方法。
使用 ps 命令有一个优点,因为它会显示您想要的所有详细信息。您可以使用 PID、应用程序名称等过滤和查看线程。您还可以通过 ps 命令监视线程计数。