CPU 성능을 가장 많이 사용하는 프로세스를 찾기 위해 작은 명령을 만들려고 합니다.
ps aux > file.txt
먼저 then 을 사용합니다 cut -c 16-20 file.txt | sort -n | tail -5
.
내가 얻는 결과는 다음과 같습니다.
1.0
2.7
8.
14.5
14.5
%CPU
그래서 내 질문은 다른 필드와 함께 사용법을 출력하는 방법입니다 .
답변1
정답은 다음과 같습니다.
ps --sort=-pcpu
상위 5위:
ps --sort=-pcpu | head -n 6
따라서 정렬을 방해하지 않고 열을 지정할 수 있습니다.
전임자:
ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6
참고 'ckujau': --sort
from에서 지원되며 다른 구현에는 이 옵션이 없을 수도 있습니다.ps
procps
답변2
해당 필드를 정렬합니다(기본값은 공백에서 공백이 아닌 변환으로 정의됨). 제 경우에는 세 번째 필드입니다.
ps aux | sort -n -k 3
답변3
허용되는 솔루션의 한 가지 성가신 점은 다양한 열의 헤더가 출력에 포함된다는 것입니다. 또 다른 문제는 이 스위치를 사용할 때 실행될 수 있고 출력에서 문제가 될 수 있는 일부 프로그램에 전체 명령줄을 제공 -x
한다는 것입니다 .ps
예를 들어
짜증나는 명령줄
샘 18174 7.3 3.2 1174896 259756 ? Sl Aug27 132:38 /opt/google/chrome/chrome --type=renderer --lang=en-US --force-fieldtrials=AsyncDns/AsyncDnsB/ForceCompositingMode/disable/InfiniteCache/No/OmniboxHQPReplaceHUPProhibitTrumpingInlineableResult/Standard/OmniboxSearchSuggestTrialStarted2013Q1/7 /OneClickSignIn/Standard/Prerender/PrerenderControl/SendFeedbackLinkLocation/default/Test0PercentDefault/group_01/UMA-Dynamic-Binary-Uniformity-Trial/default/UMA-Session-Randomized-Uniformity-Trial-5-Percent/group_17/UMA-Uniformity-Trial -1%/group_20/UMA-균일성-시행-10-퍼센트/group_07/UMA-균일성-시행-20-퍼센트/기본/UMA-균일성-시행-5-퍼센트/group_04/UMA-균일성-시행-50 - Percent/group_01/ --enable-crash-reporter=4061BD10D0DC127169CE2132BC3FF8EC, Fedora 버전 14(Laughlin) --extension-process --renderer-print-preview --disable-webgl --disable-pepper-3d --disable-gl - 멀티 샘플링 --가속 합성 비활성화 --가속 2D 캔버스 비활성화 --가속 비디오 디코딩 비활성화 --channel=18086.4.1423385819
root1764 7.7 0.3 163692 28928 tty1 Ss+ Aug21 817:49 /usr/bin/Xorg:0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-fADI0V/database -nolisten tcp vt1
ps
특히 Chrome은 이와 같은 출력을 볼 때 매우 짜증스러울 수 있습니다!출력의 헤더
$ ps auf | sort -nk 3 | head -20 ... root 1741 0.0 0.0 4140 400 tty5 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty5 root 1743 0.0 0.0 4140 400 tty6 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty6 saml 13780 0.0 0.0 115088 4216 pts/13 Ss Aug27 0:00 bash saml 20432 0.0 0.0 6308 400 pts/9 S+ Aug27 0:00 \_ inotifywatch -e CREATE /etc saml 8206 0.0 0.0 115296 1108 pts/6 Ss+ Aug21 0:03 bash USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND saml 29352 0.1 0.5 661848 42960 pts/13 Sl+ 17:59 0:18 \_ irb ...
출력의 7행에서 혼합된 헤더를 볼 수 있습니다.
대안
제목을 없애라
ps
이러한 열 헤더 표시를 비활성화하는 스위치가 제공됩니다. 사용하기 매우 쉽습니다. 스위치만 추가하면 됩니다--no-heading
.$ ps aux --no-heading | sort -nk 3 | head -10 68 1481 0.0 0.0 38592 2144 ? Ssl Aug21 0:28 hald 68 1527 0.0 0.0 18016 672 ? S Aug21 0:01 /usr/libexec/hald-addon-acpi avahi 1333 0.0 0.0 27872 1172 ? S Aug21 0:01 avahi-daemon: running [grinchy.local] avahi 1334 0.0 0.0 27752 20 ? S Aug21 0:00 avahi-daemon: chroot helper dbus 1307 0.0 0.0 22716 1900 ? Ss Aug21 1:03 dbus-daemon --system gdm 1879 0.0 0.0 317220 2740 ? Sl Aug21 0:00 /usr/libexec/polkit-gnome-authentication-agent-1 ntp 3060 0.0 0.0 32600 2152 ? Ss 20:05 0:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g root 1 0.0 0.0 19420 1004 ? Ss Aug21 0:01 /sbin/init root 1006 0.0 0.0 0 0 ? S Aug21 0:00 [kvm-irqfd-clean] root 1020 0.0 0.0 0 0 ? S Aug21 2:02 [kdmflush]
또는 다음과 같습니다:
$ ps auf --no-heading | sort -nk 3 |head -10 root 1735 0.0 0.0 4140 400 tty2 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty2 root 1737 0.0 0.0 4140 400 tty3 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty3 root 1739 0.0 0.0 4140 400 tty4 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty4 root 1741 0.0 0.0 4140 400 tty5 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty5 root 1743 0.0 0.0 4140 400 tty6 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty6 saml 13780 0.0 0.0 115088 4216 pts/13 Ss Aug27 0:00 bash saml 20432 0.0 0.0 6308 400 pts/9 S+ Aug27 0:00 \_ inotifywatch -e CREATE /etc saml 2098 0.0 0.0 115508 3148 pts/9 Ss Aug22 0:05 bash saml 27134 0.0 0.0 115496 6768 pts/18 Ss Aug27 0:02 bash saml 3248 0.0 0.0 115076 1024 pts/0 Ss+ Aug21 0:00 bash
표시되는 열을 제어합니다.
이것은 고통스러워 보이지만
ps
출력을 캡처하는 스크립트를 작성하는 경우 그다지 나쁘지 않습니다. 이와 같은 명령은ps aux
긴 형식의 열을 실행 파일 이름만 표시하는 짧은 버전 으로 바꾸는 것을 제외하고 의 출력을 모방합니다.COMMAND
$ ps ax --no-headings -o user,pid,%cpu,%mem,vsz,sgi_rss,tname,stat,start_time,time,ucmd
열 머리글 없이 함께 사용하면 스크립팅 시 처리하기가 더 쉬워집니다.
가장 높은 것부터 가장 낮은 것 순으로 CPU 프로세스 백분율 목록:
$ ps ax --no-headings -o user,pid,%cpu,%mem,vsz,sgi_rss,tname,stat,start_time,time,ucmd |sort -nrk 3|head -10 saml 18086 114 6.4 1418852 515236 ? Sl Aug27 1-10:53:31 chrome saml 18536 14.7 4.1 1276240 328636 ? Sl Aug27 04:29:21 chrome saml 18558 12.2 3.4 1209712 278228 ? Sl Aug27 03:44:22 chrome saml 18543 10.9 3.8 1238132 308824 ? Rl Aug27 03:20:18 chrome root 1764 7.7 0.4 170220 35276 tty1 Rs+ Aug21 13:40:16 Xorg saml 18174 7.3 3.0 1167728 241728 ? Sl Aug27 02:14:25 chrome saml 18314 3.6 1.4 1049020 119308 ? Sl Aug27 01:06:19 chrome saml 18528 2.7 3.1 1178368 251212 ? Sl Aug27 00:50:55 chrome saml 2389 2.0 0.1 330632 8480 ? Sl Aug21 03:37:13 compiz saml 18208 1.7 1.3 1081132 108828 ? Sl Aug27 00:32:02 chrome
가장 낮은 것부터 가장 높은 것 순으로 CPU 프로세스 백분율 목록:
$ ps ax --no-headings -o user,pid,%cpu,%mem,vsz,sgi_rss,tname,stat,start_time,time,ucmd |sort -nk 3|tail -10 saml 18208 1.7 1.3 1082156 108348 ? Sl Aug27 00:32:03 chrome saml 2389 2.0 0.1 330632 8492 ? Sl Aug21 03:37:15 compiz saml 18528 2.7 3.1 1181440 250856 ? Sl Aug27 00:50:58 chrome saml 18314 3.6 1.5 1050044 119828 ? Sl Aug27 01:06:25 chrome saml 18174 7.3 3.0 1167728 242068 ? Sl Aug27 02:14:32 chrome root 1764 7.7 0.3 163688 28716 tty1 Ss+ Aug21 13:40:26 Xorg saml 18543 10.9 3.8 1235060 305464 ? Sl Aug27 03:20:32 chrome saml 18558 12.2 3.5 1214832 283560 ? Sl Aug27 03:44:34 chrome saml 18536 14.7 3.9 1267024 314400 ? Sl Aug27 04:29:39 chrome saml 18086 114 6.4 1412992 514856 ? Sl Aug27 1-10:55:28 chrome
답변4
macOS에서는 -r
BSD 전용 플래그를 사용하여 "현재 CPU 사용량을 기준으로 정렬"할 수 있습니다.
ps -aexro pcpu,cputime,pid,etime,user,args | head
-m
"메모리 사용량"을 기준으로 정렬되는 플래그 도 있습니다 ( man ps
이것이 맞는지 표시되지 않음).실제 또는 공유 또는 개인 메모리).