출력을 정렬하고 싶습니다.다음 명령기반 pcpu
:
ps -p 29492 -L -o pid,tid,psr,pcpu
나는 다음을 시도했다:
ps -p 29492 -L -o pid,tid,psr,pcpu --sort=pcpu
그러나 이것은 작동하지 않는 것 같습니다. 이 문제를 어떻게 해결할 수 있나요?
답변1
구현 시 ps
순서는 스레드가 아닌 프로세스에만 적용될 가능성이 높습니다(참조fancy_spew()
존재하다 procps
'display.c
). 내가 아는 한, 스레드를 정렬하려면 출력을 사후 처리해야 합니다.
ps -p 29492 -L -o pid,tid,psr,pcpu | sort -n -k4,4
그러나 출력에서 헤더 행이 혼동됩니다. 헤더 행을 유지하려면 이를 꺼내서 별도로 인쇄할 수 있습니다.
ps -p 29492 -L -o pid,tid,psr,pcpu | sed -e1\!b -e'w /dev/fd/2' -ed | sort -n -k4,4
모든 출력 선택기에 대해 빈 헤더 값을 지정하여 헤더 행을 간단히 제거할 수도 있습니다.
ps -p 29492 -L -o pid=,tid=,psr=,pcpu= | sort -n -k4,4
-r
이러한 모든 경우에 매개변수를 추가하여 순서를 바꿀 수 있습니다 sort
. 정렬 순서는 LC_NUMERIC
또는 의 영향을 받을 수 있습니다 LC_ALL
. 설정은 LC_ALL=C
소수점을 사용하여 값을 올바르게 정렬합니다 .
.