posted by 귀염둥이채원 2018. 8. 1. 10:00

리눅스 top명령은 시스템 관리자가 시스템 가동 시간  로드 평균, 사용된 메모리, 실행중인 작업, 프로세스 또는 스레드의 요약 및 실행중인 각 프로세스에 대한 자세한 정보를 실시간으로 시스템 통계를 표시하는데 사용됩니다.

그러나 실행중인 시스템을 실시간으로 확인하는 것 외에도 일괄 처리 모드에서 작동 하도록 하는 플래그(-b 플래그) 명령이 출력해야하는 반복 횟수를 지정하는 플래그(-n 플래그)를 사용하여 TOP 명령 출력을 파일에 저장할 수 있습니다.

아래의 예시는 현재 작업 디렉토리에서 top 명령의 결과를 top.txt 파일에 리디렉션 하는 것입니다.

-n 인수는 top 명령을 n번 실행하여 스냅샵 정보를 출력합니다.

$ top -b -n 1 > top.txt

생성된 파일을 읽기 위해 파일을 읽는 명령어인 cat, less, more 같은 명령어를 사용하면 됩니다.

$ less top.txt
View Output of Top Command

View Output of Top Command


top 명령의 결과를 5번 반복해서 가져오려면 아래 명령어를 참고하면 됩니다.

$ top -b -n 5 > top-5iterations.txt

결과 파일에서 실행중인 task들의 개수를 표시하기 위해 아래와 같이 grep filter를 사용하면 됩니다.

$ cat top-5iterations.txt | grep Tasks
Show Top 5 Running Tasks

Show Top 5 Running Tasks

top 명령에서 구체적인 프로세스의 스냅샵 정보를 확인하려면 PID (-p) 플래그와 함께 명령을 실행하면 됩니다.

실행중인 프로세스의 PID를 얻기위해서는 pidof 명령을 사용할수 있습니다.

아래의 예제는 pidof 명령어로 crond 프로세의 PID를 알아오고, top 명령으로 crond 프로세스를 결과를 3번 스냅샵으로 찍어서 cron.txt 파일로 저장합니다.

$ pidof crond
$ top -p 678 -b -n3 > cron.txt
$ cat cron.txt
Watch Process Usage in Top Command

Watch Process Usage in Top Command

반복 루프를 이용해서 2초마다 해당 PID에 대한 프로세스 통계 정보를 출력할 수 있습니다. 반복 루프의 결과를 파일로 리디렉션 할수도 있습니다.

$ for i in {1..4}; do sleep 2 && top -b -p 678 -n1 | tail -1 ; done

반복 루프의 결과를 리디렉션 합니다.

$ for i in {1..4}; do sleep 2 && top -b -p 678 -n1 | tail -1 ; done >> cron.txt
$ cat cron.txt
Find Linux Process Statistics

Find Linux Process Statistics


참고: https://www.tecmint.com/save-top-command-output-to-a-file/