如何在顶部查看特定进程

Mic*_*man 86 process top

top 是否有任何相对直接的选项来跟踪特定流程?
理想情况下,通过人类可读的值来识别过程?例如chromejava

换句话说,我想查看 top 提供的所有典型信息,但要将结果过滤为提供的参数,即。'chrome' 或 'java'

Ram*_*esh 61

从我在这里的另一个答案中,你可以做类似的事情,

top -p `pgrep "java"`
Run Code Online (Sandbox Code Playgroud)

  • `top -p \`pgrep "java"\`` 在 bash shell `top: -p requires argument` 中给了我以下错误。**top -p `pgrep -d ',' "apache2"`** 确实对我有用,但我真的不明白该命令在做什么 - 这是向 top 输入多个参数的方式吗? (7认同)
  • 这是正确的答案。 (6认同)
  • @loretoparisi 这可能是因为您使用的选择器匹配多个进程。请参阅 [此答案](https://unix.stackexchange.com/a/347544/243709) 了解适用于一个或多个匹配进程的命令。 (2认同)

Pan*_*dya 48

您可以简单地使用grep

NAME
       grep, egrep, fgrep, rgrep - print lines matching a pattern

SYNOPSIS
       grep [OPTIONS] PATTERN [FILE...]
       grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

DESCRIPTION
       grep  searches  the  named  input  FILEs (or standard input if no files are named, or if a single
       hyphen-minus (-) is given as file name) for lines containing a match to the  given  PATTERN.   By
       default, grep prints the matching lines.
Run Code Online (Sandbox Code Playgroud)

运行以下命令以获取您想要的输出(ex-chrome):

top | grep chrome
Run Code Online (Sandbox Code Playgroud)

在这里,我们使用grep管道,|所以top&grep并行运行;top输出grep(作为输入)并grep chrome过滤匹配行chrome直到top停止。

  • 这仅在进程位于 top 的显示输出中时才有效。我认为@Ramesh 的答案应该是公认的 (8认同)
  • 谢谢,我知道其他人有他们的喜好,但我喜欢这个答案,因为它很容易理解,因此将来也更容易记住!- 我会投赞成票,但我没有足够的声誉...... (2认同)
  • 我更喜欢 https://unix.stackexchange.com/a/165343/48973,因为它显示了标题。 (2认同)

Min*_*Shi 38

top -p `pgrep -d "," java`
Run Code Online (Sandbox Code Playgroud)

解释:

  1. top -p pid1,pid2: 显示多个进程信息,pid应该用 ,
  2. pgrep -d "," java: 打印所有java程序的pids,pids默认用换行符分隔。根据顶部的要求使用 将-d ","其分隔开,

如果您看到类似 的错误top: -p argument missing,则表示没有运行 Java 程序,即 pgrep 没有输出。


Kus*_*nda 27

在 OpenBSD 中top,只需按下g并输入您要过滤的命令名称。

top例如 Ubuntu 中,按o并输入 egCOMMAND=chrome以仅显示COMMAND列中等于 的条目chrome

在使用与topUbuntu相同的实现的 Linux 上,阅读手册中的过滤窗口部分top

  • 如果在调用 top 后开始新进程,则此答案具有更新的好处! (3认同)

Mar*_*elo 8

已经提供了其他好的答案,但我前段时间制作了一个脚本,我将其命名为 ptop,它对我很有用:

#!/bin/sh
top -p $(pidof "$@" |sed s#\ #,#g) 2>/dev/null
if [ $? -ne 0 ]; then
  echo No processes with the specified name\(s\) were found
fi
Run Code Online (Sandbox Code Playgroud)

这支持指定多个进程名称(如ptop bash chrome),并在没有任何指定名称的进程正在运行的情况下提供更好的错误消息。


jon*_*tan 5

如果您想top保留所有其他流程并查看上下文,您可以按L搜索您的流程:

Locate string chrome
Run Code Online (Sandbox Code Playgroud)

这将突出显示chrome名称中的任何进程,并将其显示出来。使用&去下一场比赛。

您可以按c在显示进程名称和完整命令之间切换。


Gea*_*phy 5

您还可以在顶部使用过滤器来隔离特定进程。按“O”调出过滤器提示。然后键入格式为“FIELD=值”的过滤器。例如,要过滤所有 tmux 进程,请使用:

COMMAND=tmux
Run Code Online (Sandbox Code Playgroud)

使用“=”重置过滤器。请参阅顶部手册页中标题为“过滤”的部分。


小智 5

在 Linux 终端上:

类型:

top
Run Code Online (Sandbox Code Playgroud)

然后按o键,这将提示您添加过滤器。然后,您可以将过滤器应用于“COMMAND”列,例如,如果您想查看“bash”进程,您可以输入作为过滤器:

COMMAND=bash  
Run Code Online (Sandbox Code Playgroud)

这将仅显示命令 bash。
男士顶部 (1) 欲了解更多信息,请查找 FILTER。