$ top
top key | 설명 |
---|---|
Space bar | 화면 업데이트 |
M | 현재 상주 메모리 사용량에 따라 분류 |
T | 전체 누적 CPU 사용량에 따라 분류 |
P | 현재 CPU 사용량만 보고 분류 (default) |
H | 스레드 출력 |
u | 오로지 한 사용자의 프로세스만 보여준다. |
f | 다른 종류의 통계자료가 나타나도록 선택 |
? | 모든 top 명령에 대한 사용법의 개요 |
k | sig kill 보냄 PID 지정 (default 현재 top의 최상단 프로세스) |
s | 업데이트 주기를 변경한다. (초 단위) |
f
: 통계 자료 변경f
키를 누르면, 통계 자료를 변경하여 볼 수 있다.d
' 혹은 '<Space>
'로 통계를 선택/해제 한다.s
'로 현재 선택된 통계치를 기준으로 sort set
$ top -p pid1 [-p pid2 ...]
$ top -p pid1 [-p pid2 ...]
-p pid1
옵션과 매개변수로 <pid1>
만 모니터링 할 수 있다.$ top -p 1
/usr/bin/time
time
을 내장하고 있는데, 이보다 /usr/bin/time
을 사용하면 보다 자세히 볼 수 있다.$ /usr/bin/time [-o <output_file>] <명령>
0.05user 0.09system 0:00.44elapsed 31%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (125major+51minor)pagefaults 0swaps
시간 | 설명 |
---|---|
사용자 시간(User time) | CPU가 해당 프로그램 자체 코드를 실행하는 데 소비한 '초'단위 시간 |
시스템 시간(System time) | 커널이 프로세스의 작업(e.g. 파일이나 디렉터리를 읽는 작업)을 하는데 걸리는 시간 |
경과 시간(Elapsed time) | 프로세스가 시작~종료까지 실행하는데, 걸리는 전체 시간 CPU가 다른 작업을 하는데 보낸 시간도 포함 프로세스 자체의 성능을 측정하는데는 좋지않음 Elapsed time - (System time + User time) = 프로세스가 리소스를 기다리는 시간 |
$ lsof
$ lsof
COMMAND | PID | USER | FD | TYPE | DEVICE | SIZE | NODE | NAME |
---|---|---|---|---|---|---|---|---|
fd 보유 프로세스 | PID | 프로세스 실행하는 사용자 | 열려있는 fd | 파일 타입 | 파일을 보유하고 있는 device의 major, minor 번호 | 파일 크기 | 파일의 아이노드 숫자 | 파일 명 |
$ lsof /usr
/usr
에 열려있는 파일 항목들$ lsof -p <pid>
$ strace
$ strace cat /dev/null
cat /dev/null
'을 실행하면서 무슨 시스템 콜을 사용했고 return 값을 보여줌execve("/usr/bin/cat", ["cat", "/dev/null"]
brk()
: 메모리 초기화 콜openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
: return 3은 fd$ strace cat not_a_file
$ strace -o <file> -ff <process>
-o <file>
: 지정한 <file>.pid
형식으로 output file을 write..pid
는 -ff <process>
가 생성한 자식 프로세스 PID$ strace -o out_strace -ff echo 'hello'
$ ltrace
ltrace
명령은 공유 라이브러리 콜을 추적한다.ltrace
는 커널 레벨에서는 어떤 것도 추적하지 않는다!