`ps`로 상위 5 개의 CPU 소비 프로세스 표시


101

ps로 CPU 소비가 많은 상위 5 개 프로세스를 표시하는 방법은 무엇입니까?

답변:


95

명령으로 ps쉽게 할 수있을 때 왜 사용 top합니까?

를 사용해야하는 경우 다음을 ps시도하십시오.

ps aux | sort -nrk 3,3 | head -n 5

지속적인 업데이트로 진정한 '최상급'무언가를 원한다면 watch를 사용하십시오.

watch "ps aux | sort -nrk 3,3 | head -n 5"

3
PS AUX | 정렬 -k 3,3 | tail -n 5 ;-)
PlanasB

1
ps aux의 헤더를 건너 뛰려면 숫자 정렬을 포함시키는 것이 좋습니다. ps aux | sort -nrk 3,3 | head -n 5
syss

1
파이프 된 데이터가 나올 때 프로세스 목록이 이미 변경되었을 수 있기 때문에 이는 더 많은 자원을 소비하고 경쟁 조건에 취약한 많은 프로세스를 생성합니다.
phuclv

이것은 @ LưuVĩnhPhúc에 해당하지만 top실제로 이것이 실제로 어떻게 작동 하는지 궁금 합니다.
icedwater 2016 년

1
@icedwater top는 프로세스리스트를 읽고 다른 프로세스로 배관하지 않고 자체적으로 결과를 표시합니다
phuclv

87

정답은 다음과 같습니다.

ps --sort=-pcpu | head -n 6

따라서 정렬을 방해하지 않고 열을 지정할 수 있습니다.

전의:

ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6

MAC OS X 참고 사항 : Mac OS X ps에서는을 인식하지 --sort못하지만 -r현재 CPU 사용량별로 정렬 할 수 있습니다. 따라서 Mac OS X의 경우 다음을 사용할 수 있습니다.

ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6

3
이것이 정답입니다. 파쿤도 감사합니다. 나는 당신이 정렬을 사용하고 파이프 할 수 있다고 다른 사람들에게 설명하려고 노력했지만 ps는 정렬 옵션이 내장되어 있으며 이제는 당신이 그것을 사용하는 것이 좋습니다.
Luis Alvarado

두 번째 명령이 더 유용 해 보이지만 첫 번째 명령은 bash(x2 또는 그 head와 같이) 표시되는 것 같습니다 ps.
Wilf

3
@Wilf 첫 번째는 명령을 사용하지 않고 CPU 소비를 기준으로 정렬하는 방법을 강조하기위한 sort것이고, 두 번째는 정렬을 방해하지 않고 열을 지정하는 방법을 보여줍니다. 무언가를 설명 할 때 .. 한 번에 한 가지만 간결하고 설명하는 것이 좋습니다.
Facundo Victor

27

필요에 따라 조금 더 읽기 쉽습니다.

ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5

샘플 출력 :

 1.3     4 root     [ksoftirqd/0]
 1.1     9 root     [ksoftirqd/1]
 1.0 17606 nobody   /usr/sbin/gmetad
 1.0    13 root     [ksoftirqd/2]
 0.3 17401 nobody   /usr/sbin/gmond

(이 필드는 % CPU, PID, USER, COMMAND입니다)


22

나는 ps당신이 찾고있는 것이라고 생각하지 않습니다 . 의 출력을 보셨습니까 top?

GNU-Top을 가지고 있다면 배치 모드를 사용하여 CPU 사용량별로 정렬 된 프로세스 목록을 추출하고 head / tail을 사용하여 상위 5 줄 (처음 8 줄은 헤더)을 얻으십시오.

top -b -n 1 | head -n 12  | tail -n 5

BSD top은 다르게 동작하는 것으로 보이고 비 대화식 모드는 없으므로 다른 ps기반 솔루션 중 하나를 사용하십시오 .


1
OS X top -o cpu -n 5에서 동일한 것을 달성하는 방법입니다. 아는 사람 있나요? 나의 top것과는 다릅니다 top.
boehj

당신은 다른 상단을 가진 사람이므로 말할 수있는 위치에 있습니다. 내 상단이없는 -o-n가 종료하기 전에 화면을 갱신 횟수를 설정합니다.
Caleb

그럴 수 있지. 오늘 오후에 리눅스 박스에 올라 볼게요. 내 top배치 모드가없는 것 같습니다. top다른 명령 으로 배관하는 방법이 있어야 합니다. 나는 약간의 연구를 할 것이다.
boehj

나는 대답에 배치 모드 스위치를 언급했지만 대화 형 세션 대신 파이프의 일부임을 자동 감지하기 때문에 실제로는 필요하지 않습니다. 그것없이 그냥 배관 해 보셨습니까?
Caleb

1
할 것이다. GNU top는 오늘 오후 설명대로 작동했습니다. 건배.
boehj


5

ps의 현재 버전은 ps 매뉴얼 페이지에서 제공 한 필드 코드를 기준으로 그 안에 정렬 기능이 있습니다. 프로세서 사용에 대한 필드 코드는 "c"입니다. --sort cps 명령 끝에서 사용할 수 있습니다. 예 :ps aux --sort c

그러면 프로세스가 목록의 맨 아래에 가장 많은 CPU를 사용하게됩니다. 정렬하는 데 사용되는 필드 코드에 빼기를 추가하여 목록의 역순ps aux --sort -c


4

다른 귀중한 답변에 포인트를 추가하려면 다음을 선호합니다.

ps auxk-c | head -6

또한 헤더를 인쇄합니다.

다음 k은 정렬을위한 CPU 사용량 (alias ) 필드 --sort와 동일 하고 c지정 하며 역 정렬을위한 것입니다.%cpu-

당신은로 구분 더 지정자를 추가 할 수 있습니다 ,, 다른 가능한 지시자는 다음과 같습니다 : %mem, args, bsdstart, pid, gid, uid... 당신이 전체 목록을 찾을 수 있습니다 표준 형식 지정자의 man 페이지의 섹션을 참조하십시오. 예를 들면 다음과 같습니다.

 ps auxk -gid,-%mem | head -11

내부적으로 메모리 사용량별로 정렬 된 그룹 ID가 가장 높은 10 개의 프로세스를 인쇄합니다.


3

명령 줄 도구 ps에는 자체 정렬 옵션이 있으므로 선호합니다.

$ ps -eo pcpu,args --sort=-%cpu | head

원하는 열을 추가 할 수 있습니다. ps매뉴얼 페이지에서 사용 가능한 다른 옵션을 확인 하십시오.

$ man ps

0

topMac OS X에서는 top -l numberOfSamples(GNU의 배치 모드와 동일한 것으로 보이는) 로깅 모드 옵션 이 있습니다 top. 그러나 "표시된 첫 번째 샘플에는 샘플 간의 델타를 사용하여 계산되므로 각 프로세스에 대해 잘못된 % CPU가 표시됩니다"( man 1 top) 이므로 최소 두 개의 샘플이 있어야합니다 .

# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6

0

topCPU를 사용중인 것을 표시합니다. 설치 한 htop경우 CPU를 통한 필터링을 포함하여보다 세밀한 제어가 가능합니다.


0

상위 5 개의 CPU 소비 프로세스 를 보는 가장 간단한 방법 은

ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5

확인하려면 상위 5 메모리 소모 과정 이다,

ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5

어디,

-e :이 플래그는 모든 프로세스를 선택하는 데 사용됩니다

-o :이 플래그는 사용자 정의 형식으로 사용됩니다.

pid :이 인수는 pid를 표시하는 데 사용됩니다.

comm:이 인수는 명령 이름 만 표시하는 데 사용됩니다. 전체 명령 사용을 얻으려면 args, cmd또는command

%cpu:이 인수는 프로세스의 CPU 사용률을 "##. #"형식으로 보여줍니다. 여기에도 pcpu사용할 수 있습니다.

%mem:이 인수는 프로세스의 상주 세트 크기와 머신의 실제 메모리의 비율을 백분율로 표시합니다. 여기에도 pmem사용할 수 있습니다.

--sort: 정렬 순서를 지정하십시오. 후 입니다 기본 옵션은 어디 기호 상단에 가장 높은 값을 정렬하는 데 사용되는 [n으로, 즉 0] 증가 숫자 순서를 나열하는 것입니다.=-+


-2

top -bn1 |sed -n '7,12'p좋은 작은 라이너로도 작동합니다.
--sort = X -o X, Y, Z와 함께 ps를 사용하는 것을 선호하지만

ps를 사용하면 프로세스 OR 사용자에 대해 다른 통계 grep을 가져온 다음 파이프로 awk 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.