[RHEL6] 프로세스 관리 명령어 5탄(slabtop, strace, taskset, telinit)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 프로세스 관리 명령어 5탄(slabtop, strace, taskset, telinit)

by 찬찬이 아빠 2020. 5. 13.
반응형
  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
반응형

댓글