아니요.

아니요.

sar 보고서를 확인한 결과 하루 전과 같은 특정 시간에 CPU 및 메모리 사용률이 더 높았다는 것을 발견했습니다.

CPU와 메모리를 많이 차지하는 프로세스를 찾을 수 있나요? 어떤 프로세스가 메모리와 CPU를 소비하고 있는지 어떻게 알 수 있습니까?

답변1

아니요.

일부 (정교한) 모니터링을 설정하지 않으면 프로세스가 종료된 후 어떤 프로세스가 CPU를 사용했는지 알 수 없습니다.

테이블과 같은 "표준"은 없습니다.

exec path;exec name;stime,etime,%sys,%io,%wait,%idle,...

실행 중에 프로세스를 캡처해야 합니다.

답변2

crontab -e

# min hr day month day_of_week

# every minute run :
1 * * * *   /root/watch_processes.sh

수동으로 한 번 실행하십시오.mkdir /root/process_watch

간단한 스크립트 만들기/root/watch_processes.sh

#!/bin/bash

#       %cpu    pid   command    args

ps -eo   "%C %P %U %c %a" > /root/process_watch/`date +%Y%m%d_%H%M`

위의 명령은 날짜만 파일 이름으로 사용하여 1분마다 텍스트 파일을 생성하지만 위의 예에서는 모두 지정된 폴더 아래에 위치하게 됩니다 /mkdir/process_watch. 그에 따라 조정하십시오.

http://linuxcommand.org/lc3_man_pages/ps1.html

ps -eo필요에 따라 각 프로세스의 출력을 조정합니다. 를 사용하면 %C %P %U %c %a다음 5개 데이터 열이 생성됩니다.

  1. CPU%
  2. 프로세스 번호
  3. 사용자 이름
  4. 명령 실행
  5. 실행할 명령에 제공된 매개변수

각 파일의 첫 번째 열에 0.0이 포함된 여러 목록이 표시됩니다. 0% CPU 프로세스를 필터링하는 데 능숙 awk하거나 위의 구문을 추가할 수 있습니다.sed

말했듯이 프로세스가 발생하는 대로 캡처해야 합니다. 일단 프로세스가 완료되면 pid#이 %cpu를 사용한 시점에 대한 기록이 없습니다. 너 하나 만들어야 해공정 관찰이렇게 하고 다시 돌아가서 범인을 찾으세요.

답변3

과거의 CPU/메모리/디스크/네트워크 상태는 도움말을 통해 확인할 수 있습니다 atop -r. 그런 다음 t또는 를 눌러 T뒤로 또는 앞으로 이동합니다.

답변4

이는 명령의 출력을 top파일에 저장하여 수행할 수 있습니다.

스크립트:

NOW=`date "%y%m%d_%H%M%S"` ## to print the time.

echo "$NOW"
top > <PATH_TO_FILE>
exit 0

완료되면 이 스크립트를 cron에 넣어 특정 내부에서 실행할 수 있습니다!

관련 정보