스크립트 - 다양한 줄을 자르고 정렬하세요.

스크립트 - 다양한 줄을 자르고 정렬하세요.

CPU 사용률을 기준으로 한 사용자의 프로세스를 정렬하고 싶습니다. 나는 이것을 시도했다

ps aux|tr -s " "|cut -f3 -d " "| sort -| grep "user" > file name

이것이 작동합니까?

답변1

ps출력의 열과 정렬 순서를 지정할 수 있습니다. 요구 사항에 따라 후처리에는 추가 명령이 필요하지 않을 수도 있습니다.

다음 명령은 CPU 사용률을 기준으로 정렬된 지정된 사용자의 프로세스 목록을 제공합니다. (이 head명령은 출력을 제한하는 데에만 사용됩니다.)

[root@testvm ~]# ps -o pid,uname,pcpu,command -u root --sort=-pcpu | head
  PID USER     %CPU COMMAND
    1 root      0.5 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
  664 root      0.4 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
 1226 root      0.2 sshd: root@pts/0
 1261 root      0.2 [kworker/0:0]
    9 root      0.1 [rcu_sched]
   20 root      0.1 [kworker/0:1]
  293 root      0.1 [kworker/0:1H]
  875 root      0.1 -bash
 1008 root      0.1 /usr/bin/python -Es /usr/sbin/tuned -l -P

-o옵션은 여기에서 프로세스 ID, 사용자 이름, CPU 사용량 및 명령 열인 출력 형식을 지정합니다.

-u옵션은 ps프로세스를 특정 사용자(이 경우 루트)로 제한합니다.

--sort옵션은 정렬 순서를 CPU 사용량의 백분율로 정의합니다. 접두사 -기호 정의는 내림차순으로 정렬됩니다.

답변2

초기 검색을 특정 사용자로 제한하고 정렬한 다음 잘라내는 것을 고려해 보겠습니다.

ps hux -u USER | sort -k3 -n

이 접근 방식을 사용하면 프로세스가 이미 특정 사용자로 제한됩니다. 그런 다음 전체 검색 프로세스에 대해 정렬을 수행합니다. tr그런 다음 필요한 경우 cut특정 필드 로 파이프될 수 있습니다.

매개변수:
h:suppress 헤더
u: 사용자 지향 형식
x: BSD tty 요구 사항 제거

-uUSER: 프로세스를 선택해야 하는 특정 사용자입니다. 이는 목록일 수 있습니다.

답변3

나는 이렇게 할 것이다:

ps aux | grep user | sort -rk3 > file_name

sort -rk3에 대해 읽다man sort

너에 대한 것:

  • file name공백은 중요합니다. bash는 그것이 파일인지 모르고 출력을 이름이 지정된 파일로 리디렉션한 file다음 name파일 이름에 공백을 추가해야 하는 경우 따옴표로 묶어야 합니다. ... > "file name".

  • 많은 Linux 애플리케이션은 공간을 계산/축소하지 않고 열을 선택할 수 있을 만큼 똑똑합니다. 백분율만 원한다면 다음과 같이 할 것입니다.

    ps aux | grep user | sort -rk3 | awk '{print $3}'

    cut어쩌면 그렇게 똑똑할지 모르지만 나는 그것에 대해별로 익숙하지 않습니다.

  • top -bn1 | grep user비슷한 일을 하는 것을 고려할 수도 있습니다.

관련 정보