19. slabtop(슬랩 캐시 정보) |
1) 경로 : /usr/bin/slabtop
2) 요약 : 실시간으로 커널 슬랩 캐시 정보를 출력
3) 사용 방법 : slabtop [옵션]
4) 옵션
--delay=n, -d n : 지정한 초(n) 마다 화면을 업데이트. 기본값은 3초. 프로그램을 종료하려면 q를 입력
--sort=S, -s S : 지정한 목록으로 정렬
--once, -o : 목록을 한 번만 출력
--version, -V : 버전 정보 출력
--help : 사용법 출력
5) 추가 설명
slabtop는 실시간으로 커널 슬랩의 캐시 정보를 출력하는 명령어로 실행 중에 키보드 명령을 입력 받을 수 있습니다. Space Bar는 화면을 다시 업데이트하고, q는 프로그램을 종료합니다.
다음은 slabtop 실행 화면에서 입력 가능한 정렬 키입니다.
a : 액티브 오브젝트의 수를 기준으로 정렬
b : 슬랩 당 오브젝트를 기준으로 정렬
c : 캐쉬 크기를기준으로 정렬
l : 슬랙의 수를 기준으로 정렬
v : 액티브 슬랩의 수를 기준으로 정렬
n : 이름을 기준으로 정렬
o : 오브젝트의 수를 기준으로 정렬
p : 슬랩 당 페이지를 기준으로 정렬
s : 오브젝트 크기를 기준으로 정렬
u : 캐쉬 사용량을 기준으로 정렬
20. strace(실행하는 프로세스 추적) |
1) 경로 : /usr/bin/strace
2) 요약 : 시스템 콜을 추적하여 프로그램의 실행 과정을 출력
3) 사용 방법 : strace [옵션] 명령어 [매개변수]
4) 옵션
-c : 각 시스템 콜에 대한 시간, 콜, 에러 등을 카운트
-d : 디버깅 정보를 출력
-f : fork 시스템 콜의 결과로 생성된 자식 프로세스를 추적
-ff : "-o filename" 옵션과 함께 실행되는 프로그램의 프로세스 ID를 filename.pid로 저장
-h : 사용법 출력
-i : 시스템 콜 호출 시간에 명령 포인터를 같이 출력
-q : attaching, dataching 등의 메시지를 출력하지 않음
-r : 상대적인 타임 스탬프를 출력
-T : 각 시스템 콜에서 소모한 시간을 출력
-V : 버전 정보 출력
-v : 자세한 정보 출력
-x : 아스키 문자가 아닌 16진수를 출력
-xx : 몸든 16진수를 출력
-a column : 열의 너비를 지정(기본값 40)
-e expr ; 정규 표현식을 지정
-o filename : 저장할 파일(filename)을 지정
-O overhead : 시스템 콜 추적을 위한 오버헤더를 마이크로 초 단위로 지정
-p pid : 지정한 PID로 프로세스를 추적
-D : 추적하는 프로세스를 손자 프로세스에 붙여 실행
-s strsize : 최대 문자 크기(strsize)를 제한
-S sortby : -c 옵션과 함께 시스템 콜을 time, calls, name 기준으로 정렬(기본값 time)
-E var=val : 명령어에 대한 환경 변수(var)를 지정
-E var : 명령어에서 지정한 환경 변수(var)를 삭제
5) 추가 설명
strace 명령어는 프로그램에서 실행하는 시스템 콜과 신호를 추적할 수 있으며 바이너리 파일에 포함된 컴파일 경로 정보는 프로그램을 진단하거나 디버깅할 때 유용합니다. 이 정보는 시스템 어드민, 시스템 분석가 등에게 소스 접근이 쉽지않은 프로그램 문제를 디버깅할 경우 재컴파일하지 않고도 쉽게 문제를 해결할 수 있게 도와줍니다. 공부하는 학생이나 해커들에게는 프로그램의 구조와 시스템 콜을 추적할 수 있는 정보를 제공합니다. 또한 사용자나 커널 인터페이스에서 일어나는 이벤트 시점의 시스템 콜과 시그널을 찾고 경계 구간을 세밀하게 조사할 수 있어 버그를 줄이고 레이스 컨디션을 잡는데 매우 유용한 정보를 프로그래머에게 제공합니다.
아래와 같이 strace 명령은 ls의 컴파일 경로나 조건, 그리고 시스템 콜의 동작 등의 정보를 살펴 볼 수 있습니다.
$ strace /bin/ls
execve("/bin/ls", [/bin/ls"], [/* 40 vars */]) = 0
brk(0) = 0x884b000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78d8000
... 생략 ...
-c 옵션은 시스템 콜에 대한 time, seconds, usecs/call, calls, errors를 카운트해서 보여줍니다.
$ strace -c /bin/ls
COPYING MAINTAINERS block firemware kernel scripts usr
CREDITS Makefile crypto fs lib security virt
Doc README debian include mm sound
Documentation REPORTING-BUGS debian.master init nnet tols
Kbuild arch drivers ipc samples ubuntu
% time seconds usecs/call calls errors syscall
---------------------------------------------------------------------------
100.00 0.000062 2 26 1 open
0.00 0.000000 0 11 read
0.00 0.000000 0 5 write
0.00 0.000000 0 27 close
0.00 0.000000 0 1 execve
0.00 0.000000 0 9 9 access
0.00 0.000000 0 3 brk
-o 옵션은 strace 명령의 출력을 파일로 저장합니다.
$ strace -o straceout.txt /bin/ls
21. taskset(CPU 선호도 설정) |
1) 경로 : /usr/bin/taskset
2) 요약 : 프로세스의 CPU 선호도를 지정하거나 출력
3) 사용 방법
taskset [옵션] mask 명령어[인자]...
taskset [옵션] -p [mask] pid
mask는 프로세스가 사용할 CPU 값을 나타내며 16진수로 표현
0x00000001은 프로세서 #0
0x00000003은 프로세서 #0과 #1
0xFFFFFFFF은 모든 프로세서(#0 부터 #31)
4) 옵션
-p, --pid : 기존에 있는 PID로 동작하고, 새로운 태스크를 생성하지 않음
-c, --cpu-list : 비트 마스트 대신 숫자 형식의 프로세서를 지정. 이 목록은 쉼표(,)로 구분하고, 범위(-)을 지정할 수 있음(예. 0,5,7,9-11)
-h, --help : 사용법 출력
-V, --version : 버전 정보 출력
5) 추가 설명
taskset 명령어는 프로세스가 점유하고 있는 CPU 프로세서 ID를 확인하거나 기존의 프로세서 ID에서 새로운 프로세서 ID로 할당하여 선호도(affinity)를 변경할 수 있습니다.
아래는 sshd 데몬을 CPU의 세 번째 프로세서에 할당하는 예제입니다.
$ taskset 3/usr/sbin/sshd
-p 옵션은 기존에 점유하고 있는 CPU 선호도를 출력
$ taskset -p 700
-c 옵션은 프로세스의 태스크를 프로세서 ID별로 분할하여 지정할 수 있습니다. 아래 명령어는 프로세스 ID 700을 0, 2, 7, 8 ,9, 10, 11번 프로세서에 할당합니다.
$ taskset -pc 0,2,7-11 700
22. telinit(프로세스 제어) |
1) 경로 : /sbin/telinit
2) 요약 : 특정 레벨의 시스템으로 설정
3) 사용 방법 : telinit runlevel
4) 추가 설명
telinit 명령어는 현재 레벨의 모든 프로세스를 종료하고 지정한 레벨의 프로세스를 시작합니다. /etc/inittab 파일의 설정에 따라 레벨을 수행합니다.
레드햇 배포판 기준으로 X윈도우는 런레벨 5로 되어 있습니다. 만일텍스트 모드인 런레벨3으로 시스템을 변경하려면 아래와 같이 telinit 명령을 사용합니다.
# telinit 3
아래와 같이 telinit 명령으로 runlevel 6으로 지정하면 시스템을 종료할 수 있습니다.
# telinit 6
'IT 이야기 > Linux 명령어' 카테고리의 다른 글
[RHEL6] 하드웨어 명령어 1탄(alsactl, alsamixer, amixer, aplay, apm) (0) | 2020.05.14 |
---|---|
[RHEL6] 프로세스 관리 명령어 6탄(time, tload, top) (0) | 2020.05.13 |
[RHEL6] 프로세스 관리 명령어 4탄(pmap, ps, pstree, renice) (0) | 2020.05.13 |
[RHEL6] 프로세스 관리 명령어 3탄(mkfs, nice, nohup, pidof) (0) | 2020.05.12 |
[RHEL6] 프로세스 관리 명령어 2탄(kill, killall, lockfile, lsof, mkfifo) (0) | 2020.05.12 |
댓글