리눅스프로그래밍

우분투 리눅스 - 프로세스 관리 명령(pgrep, kill)

헬로월드! 2020. 5. 23. 11:48

ps 명령에서 특정 프로세스의 정보를 검색하려면 | 를 사용하여 검색한다. 

ps -ef | grep 명령 의 형태로 연결해서 사용한다.

예를들어, bash 셸에 대한 정보를 검색했다고 하면,

ps -ef | grep bash 를 입력해주면 된다.

 

ps 와 grep 을 하나로 통합하여 만든 명령이라고 생각할 수 있는 pgrep 이 있다. 

pgrep

- 기능: 지정한 패턴과 일치하는 프로세스의 정보를 출력한다.

- 형식: pgrep [옵션] 패턴

- 옵션: -x : 패턴과 정확히 일치하는 프로세스의 정보를 출력한다.

         -n : 패턴을 포함하고 있는 가장 최근 프로세스의 정보를 출력한다.

         -u 사용자명: 특정 사용자에 대한 모든 프로세스를 출력한다.

         -l: PID 와 프로세스 이름을 출력한다.

         -t term : 특정 단말기와 관련된 프로세스의 정보를 출력한다.

 

시그널 

프로세스에 무언가 발생했음을 알리는 간단한 메시지이다. 이 메시지에는 무엇이 발생했는지 나타내는 미리 정의된 상수를 사용한다. 시그널은 번호로 구분되며 이름을 가지고 있다. 시그널을 받은 프로세스는 기본적으로 종료된다.

kill -l 명령을 이용하면 시그널의 목록을 볼 수 있다.

 

시그널 번호 기본 처리 의미
SIGHUP 1 종료 터미널과 연결이 끊어졌을 때 발생 
SIGINT 2 종료  인터럽트로 사용자가 ctrl + c 입력하면 발생
SIGQUIT 3 종료, 코어덤프  종로 신호로 사용자가 ctrl + \ 을 입력하면 발생
SIGKILL 9 종료 이 시그널을 받은 프로세스는 무시할 수 없으며 강제 종료
SIGALRM 14 종료 알람에 의해 발생
SIGTERM 15 종료 kill 명령이 보낸내는 기본 시그널

 

응답이 없는 프로세스나 불필요한 프로세스를 강제로 종료하려면 해당 프로세스의 PID 를 알아야한다. ps -ef 나 ps aux 명령으로 프로세스의 정보를 확인하면 PID와 PPID 를 알 수 있다.

 

kill 

-기능 : 지정한 시그널을 프로세스에 보낸다.

-형식: kill [-시그널] PID

-시그널: 2 ) 인터럽트 시그널을 보낸다. (ctrl+c)

              9 ) 프로세스를 강제로 종료한다.

              15 ) 프로세스와 관련된 파일을 정리한 후 종료한다. 종료되지 않는 프로세스가 있을 수 있다. (설정 없으면 15로 실행됨)

단순히 kill 명령으로는 종료되지 않을 경우, 강제 종료 시그널인 9 번을 보낸다!

 

pkill 명령을 이용해 프로세스 종료하기 : PID 가 아니라 프로세스의 이름명령 (CMD) 로 프로세스를 찾아 종료한다.

 

프로세스 관리 도구 

top 명령: 현재 실행 중인 프로세스에 대한 정보를 주기적으로 출력

top 명령의 출력 정보

항목 의미 항목 의미
PID 프로세스 아이디 SHR 프로세스가 사용하는 공유 메모리의 크기
USER 사용자 계정 %CPU 퍼센트로 표시한 CPU 사용량
PR 우선순위 %MEN 퍼센트로 표시한 메모리 사용량
NI Nice 값 TIME+ CPU 누적 이용 시간
VIRT 프로세스가 사용하는 가상메모리 크기 COMMAND 명령이름
RES 프로세스가 사용하는 메모리 크기    

 

top 명령의 내부 명령

내부 명령 기능
enter , space bar  화면을 즉시 다시 출력
h, ?  도움말 화면을 출력
k 프로세스 종료, 종료할 프로세스의 PID를 물어본다.
n 출력하는 프로세스의 개수를 바꾼다.
p cpu 사용량에 따라 정렬하여 출력한다.
q top 명령을 종료
M 사용하는 메모리의 크기에 따라 정렬하여 출력
u 사용자에 따라 정렬하여 출력