이상한 문제가 있습니다. 가끔 모니터가 꺼지면 팬이 크게 돌아가는 경우가 있습니다. 제가 이해한 바로는 시스템의 CPU 사용량이 높지 않아도 됩니다.
그러나 마우스를 움직여 이 문제를 진단하기 시작하면 top
어떤 활동이든 팬과 함께 중지됩니다.
그래서 나는 특정 시점에 시작할 수 있고 프로그램이 프로세스의 CPU 활동을 기록하는 동안 컴퓨터를 무인 상태로 둘 수 있는 스크립트/프로그램/방법을 원합니다. 그런 다음 컴퓨터 작동을 재개하면 프로그램을 읽을 수 있어야 합니다. 그것으로부터 팬들이 어떤 프로세스를 진행하고 있는지에 대한 보고서가 곧 제공될 예정입니다.
편집: chromium
화면이 꺼졌을 때 팬이 크게 돌아가는 프로세스가 있습니다. 하지만 이유를 모르겠습니다.
답변1
검색을 단순화하기 위해 loadavg의 기본 덤프와 함께 "ps"를 몇 초마다 실행할 수 있습니다. "psdump.sh"로 저장하고 실행 가능하게 만듭니다 chmod +x psdump.sh
.
#!/bin/bash
while true; do
sleep 15
date
cat /proc/loadavg
ps Swaux | awk '$3!=0.0 {print}'
done
터미널에서 스크립트를 실행하여 파일에 저장하고 백그라운드로 이동할 수 있습니다.
/home/lserni/psdump.sh > /home/lserni/psdump.log
그럼 기다리세요. 파일은 다음과 유사하게 나타납니다.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 5.0 0.0 185412 5272 ? Ss Jan30 15340:14 /lib/systemd/systemd --system --deserialize 27
root 63 1.6 0.0 0 0 ? S Jan30 5042:59 [kswapd0]
root 1930 1.5 0.0 29008 2464 ? Ss Jan30 4816:50 /usr/sbin/cron -f
root 7446 0.1 0.0 3964564 60880 ? Sl Jan30 425:27 /opt/dell/srvadmin/sbin/dsm_om_connsvcd -run
mysql 7509 3.3 57.3 41322444 37757724 ? Ssl Aug17 599:39 /usr/sbin/mysqld
root 9634 17.1 4.9 6141588 3234672 ? Ssl Jan30 52154:34 /usr/local/bin/antani
로그 파일은 CPU 비율이 0이 아닌 프로세스(하위 프로세스 포함)만 보고합니다. 관심을 가질 수 있는 열은 %CPU 및 누적 시간(열 3 및 10)입니다.
답변2
이렇게 하면 트릭을 수행할 수 있습니다.
Top에는 를 전달하기 위한 "배치" 모드가 있습니다 -b
. 따라서 이 스크립트는 10초마다 상단 출력을 기록합니다.
#! /bin/sh
set -u
recording=/tmp/top_recording.txt
top_interval_seconds=10
top -b -d "$top_interval_seconds" > "$recording"
안타깝게도 처음 몇 개의 프로세스/작업을 제외한 모든 프로세스/작업이 중복되므로 Tr 및 Sed를 사용하여 보고서를 확인하고 생성된 각 스냅샷에 대해 상위 3개 프로세스만 남겨 두었습니다.
#! /bin/sh
set -u
recording=/tmp/top_recording.txt
regexp_first_few_lines='top'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'\
'[^\x00]*\x00'
export LC_ALL=C
< "$recording" \
tr '\n' '\0' | \
sed -E -e 's/\x00top/\ntop/g' | \
sed -E -e 's/^('"$regexp_first_few_lines"')(.|\x00)*$/\1/' | \
tr '\0' '\n' | \
less
Less에서 CPU 활동이 높은 프로세스를 찾으려면 다음을 사용하세요.
/[0-9] [A-Za-z] ([^ ]| [^ ]| [987])