위로 특정 프로세스를 추적하는 비교적 간단한 옵션이 있습니까?
이상적으로는 사람이 읽을 수 있는 값으로 프로세스를 식별합니까? 예를 들어 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`
설명하다:
top -p pid1,pid2
: PID 사이를 쉼표로 구분하여 여러 프로세스 정보를 표시합니다.,
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
) 지정을 지원하고 지정된 이름의 프로세스가 실행되고 있지 않을 때 더 나은 오류 메시지를 제공합니다.