ps의 출력 정렬이 작동하지 않습니다.

ps의 출력 정렬이 작동하지 않습니다.

출력을 정렬하고 싶습니다.다음 명령기반 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소수점을 사용하여 값을 올바르게 정렬합니다 ..

관련 정보