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 또는 유사한 소프트웨어를 사용하여 사용량을 그래프로 표시할 수 있습니다.
크론탭에 추가하는 방법
- 위 명령을 입력할 스크립트를 만듭니다(예
$HOME/bin/pscsv.sh
: ). - chmod+x/경로/to/pscsv.sh
crontab -e
*/5 * * * * /path/to/pscsv.sh
원하는 대로 기간을 조정하는 것과 유사한 줄을 추가합니다 (이 예는 5분마다 실행됩니다).