如何查看top的具体进程

如何查看top的具体进程

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

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

答案1

来自我的另一个答案这里,你可以做类似的事情,

top -p `pgrep "java"`

答案2

你可以简单地使用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.

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

top | grep chrome

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

答案3

top -p `pgrep -d "," java`

解释:

  1. top -p pid1,pid2:显示多个进程信息,pid之间用逗号分隔,
  2. pgrep -d "," java:打印所有java程序的pid,pid默认以换行符分隔。根据顶部的要求,使用-d ","来分隔它。,

如果您看到类似 的错误top: -p argument missing,则意味着没有 java 程序正在运行,即 pgrep 没有输出。

答案4

已经提供了其他很好的答案,但我前段时间制作了一个脚本,我将其命名为 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

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

相关内容