[RHEL6] 프로세스 관리 명령어 1탄(fuser, init, ionice, ipcrm, ipcs)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 프로세스 관리 명령어 1탄(fuser, init, ionice, ipcrm, ipcs)

by 찬찬이 아빠 2020. 5. 8.
반응형
  1. fuser(프로세스 식별)

 1) 경로 : /usr/bin/fuser

 2) 요약 : 파일이나 파일 구조를 사용하여 프로세스를 식별하고 통제

 3) 사용 방법 : fuser [옵션] 이름 ...

 4) 옵션

 -a : 명령행에서 사용하지 않는 파일도 출력

 -c : -m과 동일한 기능을 함(POSIX 호환을 위해)

 -f : OPSIX 호환을 위해 사용

 -i : 프로세스를 죽이기 전에 확인(-k 옵션이 없으면 무시됨)

 -l(엘) : 가능한 시그널 이름을 출력

 -m : 파일 시스템이나 블록 디바이스를 사용하고 있는 모든 프로세스를 출력

 -n SPACE : 지정된 SPACE(file, udp, tcp)에서 검색

 -s : 간략한 정보 출력

 -SIGNAL : SIGKILL 대신 시그널(SIGNAL)을 지정

 -u : 사용자 ID 출력

 -v : 상세한 정보 출력

 -V : 버전 정보 출력

 -4 : IPv4 소켓만 찾음

 -6 : IPv6 소켓만 찾음

 - : 초기화 옵션

 

 5) 추가 설명

fuser 명령은 어떤 파일이나, 파일 집한, 디렉터리에 접근하고 있는 프로세스를 PID로 식별해 줍니다.

 

아래는 -mu 옵션으로 해당 파일을 사용하고 있는 모든 프로세스와 사용자 ID를 확인할 수 있습니다.

# fuser -mu /etc/passwd

 

-muv 옵션은 위 예제보다 더 상세한 정보를 출력합니다.

# fuser -muv /etc/passwd

 

아래 예제는 마운트된 CD-ROM이 "Resource busy" 같은 에러 메시지로 언마운트가 되지 않는 경우입니다. 이럴 경우에는 -k 옵션으로 /mt/CD-ROM 디렉터리 이하에 머무르는 프로세스를 강제로 죽여 언마운트 할 수 있습니다.

# umount /mnt/CD-ROM
umount: /mnt/CD-ROM : device is busy
# fuser -km /mnt/CD-ROM

 

 

  2. init(초기화 프로세스 제어)

 1) 경로 : /sbin/init

 2) 요약 : 부팅할 때 실행 레벨에 따라 프로세스를 호출

 3) 사용 방법 : init [-t sec] [0123456SsQq]

 4) 옵션

 0, 1, 2, 3, 4, 5, 6 : 런 레벨별로 다시 시작. 각 레벨은 /etc/inittab에서 확인 가능

 Q or q : /etc/inittab 파일을 다시 읽음

 S or s : 시스템의 싱글 모드로 부팅

 -t sec : 지정한 초(sec) 만큼 TERM 시그널을 보냄. 초기값은 5초

 

 5) 추가 설명

시스템 부팅 시에 커널이 메모리에 적재된 다음 맨 처음으로 init 프로세스가 로딩됩니다. init 프로세스는 자신을 포크(fork)하여 또 다른 프로세스나 스크립트를 호출합니다.

 

init 프로세스는 /etc/inittab을 읽어 시스템의 실행 레벨을 결정하고, 로그인을 위한 getty 프로그램과 데몬을 실행시킵니다. 아래 파일에서 initdefault는 실행 레벨을 지정하는데 5는 X11을 실행합니다. 만일 콘솔 모드로 부팅하려면 id:5:initdefault의 값을 id:3:initdefault로 변경합니다. "#Run gettys in standard runlevels" 주석 아래 mingetty는 로그인을 관리하는 getty 관련 명령어 입니다. 런레벨 5로 부팅 후에는 Ctrl + Alt + F1 부터 F6가지 키로 각각의 콘솔 로그인 화면을 볼 수 있습니다. 만일 콘솔 화면 기능이 필요 없다면 원하는 콘솔의 숫자만 남겨두고 나머지는 삭제하거나 앞줄에 주석(#) 처리합니다. inittab 파일을 수정하고 나서는 init -q 명령으로 수정된 내용을 반영합니다. inittab 파일의 맨 마지막 줄의 x:5:respawn:/etc/X11/prefdm -nodaemon은 실행 레벨 5에서 X윈도우 로그인 프로그램을 실행합니다.

 

# cat /etc/inittab
----------------------------------------------------------------------------
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single usser mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
id:5:initdefault:

# System initalization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc.rc.d/rc 0
l1:1:wait:/etc.rc.d/rc 1
l2:2:wait:/etc.rc.d/rc 2
l3:3:wait:/etc.rc.d/rc 3
l4:4:wait:/etc.rc.d/rc 4
l5:5:wait:/etc.rc.d/rc 5
l6:6:wait:/etc.rc.d/rc 6

# Things to run in every runlevel. ud::once:/sbin/update
# Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# when out UPS tells us power has failed, assume we have a few minutes
# of power left.   Schedule a shutdown for  minutes from now.
# This does, of course, assum you have powerd installed and your
# YPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
# If power was restored before the shutdown -c "Power Restoredl Shutdown Cancelled"

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5
# dxm is now a separate service
x:5:respawn:/etc/X11/perfdm -nodaemon

 

 

  3. ionice(IO 스케쥴링 설정)

 1) 경로 : /usr/bin/ionice

 2) 요약 : 프로그램의 IO 스케쥴링 클래스와 우선 순위를 확인 및 설정

 3) 사용 방법

 ionice [[-c class] [-n classdata] [-t]] -p PID [PID] ...

 ionice [-c class] [-n classdata] [-t] COMMAND [ARG] ...

 4) 옵션

 -c class : 스케쥴링 클래스(class)를 설정. 0은 값 없음, 1은 실시간으로, 2는 최우선적으로 실행, 3은 유휴상태

 -n classdata : 스케쥴링 클래스 데이터(classdata)를 설정. 인자 값으로 0-7의 값을 지정할 수 있음. 낮은 숫자일수록 우선 순위가 높음

 -p pid : 프로세스를 지정

 -t : 우선 순위 설정에 실패하더라도 무시

 

 5) 추가 설명

nice 명령어는 프로세스, ionice 명령어는 IO 스케쥴러의 우선순위 설정에 사용합니다. 아래 예제는 PID 256 번을 정지 상태로 설정합니다.

# ionice -c 3 -p 256

 

아래와 같이 xterm 프로그램의 스케쥴링 클래스를 최선형으로 설정하고, 클래스 데이터를 0으로 설정할 수 있습니다.

# ionice -c 2 -n 0 xterm

 

만일 프로세스 번호만 지정하면 지정한 프로세스의 클래스와 우선 순위를 출력합니다.

# ionice -p 1489
2789

 

 

  4. ipcrm(IPC 리소스 삭제)

 1) 경로 : /usr/bin/ipcrm

 2) 요약 : IPC에서 지정된 리소스를 삭제

 3) 사용 방법 : ipcrm [옵션]

 4) 옵션

 -m identifier, -M key : 데이터 구조와 연관된 공유 메모리의 세그먼트(shared memory segments)를 삭제

 -q identifier, -Q key : 데이터 구조와 메시지 큐(message queue)를 삭제

 -s identifier, -S key : 데이터 구조와 세마포어(semaphore) 배열을 삭제

 

 5) 추가 설명

ipcrm 명령어는 시스템 관리 명령어로서 IPC(interprocess communication)의 메시지 큐, 공유 메모리의 세그먼트 또는 세마포어 배열 등을 삭제합니다. 세마포어 고유 ID 또는 키(key)를 지정하여 삭제합니다. 공유 메모리의 세그먼트를 삭제해 봅니다.

먼저 ipcs로 정보를 읽어 옵니다.

# ipcs -m

----- 놈ㄱㄷㅇ ㅡ드ㅐ교 ㄴㄷ흐둣ㄴ -----
key			shmid		owner		perm	bytes		nattch		status
0x00000000	294912		chan		600		393216		2			dest
0x00000000	1671186		chan		600		180600		2			dest
0xcbc384f8	1703955		chan		600		64528		1

 

-M key를 입력하고 명령어를 실행하면 해당 키의 공유 메모리 세그먼트가 지워집니다.

# ipcs -m | grep -i 0xcbc384f8
0xcbc384f8		1703955		chan		600		64528		1

# ipcrm -M 0xcbc384f8
# ipcs -m | grep -i 0xcbc384f8
#

 

참고로 세마포어 ID를 지정하여 공유 메모리 세그먼트를 삭제하려면 다음과 같이 수행합니다.

# ipcrm -m 1703955

 

 

  5. ipcs(IPC 정보 보기)

 1) 경로 : /usr/bin/ipcs

 2) 요약 : IPC 관련 정보를 확인

 3) 사용 방법 : ipcs [옵션]

 4) 옵션

 -i : 특정 id에 대한 정보를 확인

 -m : 공유 메모리 세그먼트를 확인

 -q : 메시지 큐를 보여줌

 -s : 세마포어 배열을 보여줌

 -a : 모든 리소스를 출력. 출력 형식은 -t, -p, -c, -l(엘), -u로 설정할 수 있음

 -t : 시간 정보를 같이 출력

 -p : pid 정보를 같이 출력

 -c : creator 정보를 같이 출력

 -l(엘) : limits 정보를 같이 출력

 -u : 간추린 정보를 같이 출력

 

 5) 추가 설명

ipcs 명령어는 시스템에서 사용 중인 콜 프로세스의 ipc와 관련된 정보를 출력합니다. 다음과 같이 공유 메모리 정보(-m)와 시간 정보(-t)를 함께 출력합니다.

# ipcs -t -m
----- Shared Memory Attach/Detach/Change Times -----
shmid		owner		attached		detached		changed
294912		chan		Apr 1 21:03:53	Apr 1 21:03:57	Apr 1 21:03:51
327681		chaan		Apr 1 21:03:52	Not set			Apr 1 21:03:52
229378		chan		Apr 1 21:03:48	Apr 1 21:03:48	Apr 1 21:03;48
262147		chan		Apr 2 01:19:38	Apr 2 01:19:38	Apr 1 21:03:49
360452		chan		Apr 2 01:19:38	Apr 2 01:19:38	Apr 1 21:03:52
... 생략 ...
반응형

댓글