top -c
Top에는 모든 프로세스가 나열되어 있으며 -u 옵션을 사용하여 사용자 이름으로 프로세스를 필터링하는 좋은 옵션이 있지만 상단 출력의 COMMAND 열에 나열된 프로세스 이름을 기반으로 프로세스를 쉽게 필터링 할 수 있는지 궁금합니다.
예를 들어 processname의 top -some 옵션 -substring을 원하면 top은 명령 이름 에이 하위 문자열 만있는 pid를 표시합니다.
답변
pgrep을 사용하여 pid의 일치하는 명령 줄을 가져옵니다.
top -c -p $(pgrep -d',' -f string_to_match_in_cmd_line)
top -p
은 쉼표로 구분 된 pid 목록을 기대하므로 -d','
pgrep에서 사용 합니다. -f
pgrep 의 플래그는 프로그램 이름 대신 명령 행과 일치시킵니다.
답변
대화식으로 할 수 있습니다
COMMAND 열에 문자열 foo가 포함 된 행을 표시하기 위해을 실행 한 후 열에 필터를 top -c
치고 o씁니다.COMMAND=foo
기본 출력을 원하면 충분할 수 있습니다.
top -bc |grep name_of_process
답변
top
실행 중에 필터를 추가 할 수 있습니다 . o키를 누른 다음 필터 식을 입력하십시오. 예를 들어, 모든 Java 프로세스를 모니터하려면 필터 표현식을 사용하십시오 COMMAND=java
. 키를 다시 누르면 여러 개의 필터를 추가 할 수 있고 키를 사용하여 사용자별로 필터링 할 수 있으며 u키 를 사용하여 모든 필터를 지울 수 있습니다 =.
답변
@perreal의 명령은 훌륭하게 작동합니다! 잊어 버린 경우 두 단계로 시도하십시오 …
예 : yakuake라는 응용 프로그램 만 표시하는 필터 상단 :
$ pgrep yakuake
1755
$ top -p 1755
유용한 상단 대화식 명령 ‘c’: 전체 경로와 명령 이름 ‘k’간 전환 : PID에 의한 종료 ‘F’: 필터링 기준 … 화살표로 선택 … ‘s’를 눌러 정렬
아래 답변도 좋습니다 … 오늘 그것을 찾고 있었지만 찾을 수 없었습니다. 감사
답변
StackOverflow에서 많은 답변을 찾은 후에도 내 요구에 맞는 답변을 보지 못했습니다.
즉, 주어진 키워드로 새로 고침을 유지하기 위해 top 명령을 수행하기 위해 새로운 프로세스가 생성 될 때 CTRL + C / top을 반복 할 필요가 없습니다.
따라서 나는 새로운 것을 만듭니다 …
다시 시작할 필요가없는 버전입니다.
__keyword=name_of_process; (while :; do __arg=$(pgrep -d',' -f $__keyword); if [ -z "$__arg" ]; then top -u 65536 -n 1; else top -c -n 1 -p $__arg; fi; sleep 1; done;)
__keyword를 수정하면 작동합니다. (우분투 2.6.38 테스트)
2015 년 2 월 14 일 추가 : 위 코드에서 시스템 작업 부하 부분이 누락되었습니다. “부하 평균”부분에 관심이있는 사람들 :
__keyword=name_of_process; (while :; do __arg=$(pgrep -d',' -f $__keyword); if [ -z "$__arg" ]; then top -u 65536 -n 1; else top -c -n 1 -p $__arg; fi; uptime; sleep 1; done;)
답변
이건 어때?
top -c -p <PID>
답변
다음 코드와 함께 쉘 스크립트를 사용했습니다.
#!/bin/bash
while [ 1 == 1 ]
do
clear
ps auxf |grep -ve "grep" |grep -E "MSG[^\ ]*" --color=auto
sleep 5
done