내 메모리와 CPU 시간을 가장 많이 차지하는 백그라운드 작업을 어떻게 찾을 수 있나요?

내 메모리와 CPU 시간을 가장 많이 차지하는 백그라운드 작업을 어떻게 찾을 수 있나요?

mon이나 sysstat 같은 일종의 모니터링 도구가 필요할 수도 있지만요. 내 메모리, CPU 시간 등을 가장 많이 차지하는 작업이 무엇인지 이해하는 방법을 찾고 있습니다.

모든 워크스테이션/데스크탑이 고유하다는 것을 알고 있지만 내 데스크탑 중 하나의 일반적인 워크로드는 다음과 같습니다.

  • 단일 사용자(여러 사용자를 가질 수 있는 옵션이 있더라도)
  • 게임 - Aisleriot, kshisen
  • 토렌트 클라이언트 - qbittorrent
  • 이메일 클라이언트 – Thunderbird
  • 메시징 클라이언트 - 공감, 전보, quasselcore 및 클라이언트.
  • 브라우저 - Firefox, 때로는 Tor
  • 데스크탑-MATE
  • 미디어 플레이어 - 대부분의 경우 mpv

작업량은 대개 가볍지만 하드 드라이브 센서에는 여전히 불이 켜져 있습니다. 이는 포그라운드 작업이 발생하지 않는데도 일부 백그라운드 작업이 집중적으로 발생하고 있음을 의미합니다. top을 사용하여 가장 많은 CPU 및 메모리 주기를 차지하는 작업을 찾을 수 있지만 이는 일시적일 뿐입니다. 나는 일정 기간(예: 하루)에 걸쳐 계산하고, 백그라운드에서 실행하고, 분석하기에 충분한 그래프를 생성하고, 가장 중요한 것은 사용자 정의 위치(예: /home)에 원시 데이터를 보관할 수 있는 것이 필요하다는 것을 깨달았습니다. /shirish/mon 또는 임의의 디렉토리 이름. /var/log//logs라면 괜찮을 것입니다.

몇 가지 사항만 알고 싶습니다.

  • 시간이 지남에 따라 메모리와 CPU를 차지하는 프로세스, 포그라운드 프로세스와 백그라운드 프로세스.
  • CPU와 메모리의 대부분을 차지하는 백그라운드 프로세스
  • 로깅은 조정 가능하며 스냅샷은 2~5분마다 촬영됩니다.

사람들이 일부 도구와 방법을 사용하여 서버 등에 대해 이 작업을 수행했다고 확신하지만 위 시나리오에 대해 수행한 사람이 있습니까? 그렇다면 그들은 어떻게 했나요?

답변1

//List Processes
ps -la

//Display All Network Activity
nettop

크론 작업이 가장 간단한 방법입니다.
파이프를 사용하여 출력을 원하는 환경/경로로 리디렉션

답변2

예를 들어 cron을 사용하여 가끔씩 다음 명령을 실행할 수 있습니다.엑스분:

ps --no-headers -eo "uname fname %cpu %mem" | sed -e 's/ \+/,/g' | sed "s/^/$(date --iso-8601='minutes'),/g" >> /path/to/ps.csv

ps필요에 따라 필드를 조정합니다.

그런 다음 출력 파일을 사용하여 스프레드시트 소프트웨어, gnuplot 또는 유사한 소프트웨어를 사용하여 사용량을 그래프로 표시할 수 있습니다.

크론탭에 추가하는 방법

  1. 위 명령을 입력할 스크립트를 만듭니다(예 $HOME/bin/pscsv.sh: ).
  2. chmod+x/경로/to/pscsv.sh
  3. crontab -e*/5 * * * * /path/to/pscsv.sh원하는 대로 기간을 조정하는 것과 유사한 줄을 추가합니다 (이 예는 5분마다 실행됩니다).

관련 정보