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 요구 사항 제거
-u
USER: 프로세스를 선택해야 하는 특정 사용자입니다. 이는 목록일 수 있습니다.
답변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
비슷한 일을 하는 것을 고려할 수도 있습니다.