리눅스(Linux)에서 프로세스 확인&종료하기
프로세스란?
프로세스의 일반적인 정의는 “실행중인 프로그램” 을 뜻한다. 컴퓨터의 CPU 에서 실행되는 모든 프로그램을 프로세스라고 한다.
각각의 프로세스는 고유 번호인 프로세스 ID ( PID )를 가지고 더 이상 할당할 PID 가 없으면, 사용되지 않은 가장 낮은 숫자로 되돌아가 다시 할당 한다.
-프로세스의 상태정보
R | 프로세스가 실행중 또는 실행 가능한 상태 |
Z | 프로세스가 종료되었지만 부모프로세스가 먼저 종료된 좀비 상태 |
T | 정지된 상태 (suspend) |
S | 인터럽트를 기다리는 휴면 상태 (sleeping) |
D | 인터럽트가 될 수 없는 대기 상태 (uninterruptible sleep) |
*좀비 상태 : 실행이 끝났는데도 종료되지 못하고 메모리상에 남아 있는 프로세스
ps 명령어
프로세스의 이름, 상태, PID등 프로세스에 관한 정보를 확인하는 명령어이다.
ps [옵션]
[ps 옵션]
- ‘-e’ : 모든 프로세스 정보를 출력한다.
- ‘-f” : 프로세스의 다양한 정보를 출력한다.
- ‘-a’ : 실행중인 전체 사용자의 모든 프로세스를 출력한다.
- ‘-u’ : 프로세스를 실행한 사용자 정보와 프로세스의 시작 시간 등을 출력한다.
- ‘-x’ : 제어 터미널을 갖지 않는 프로세스(백그라운드에서 실행되는 프로세스)를 출력한다.
ps 예시:
ps -ef
위 예시는 보편적으로 많이 사용되는 명령어이며 현재 실행 중인 프로세스들의 정보를 조회하는 명령어이다.
( PID,PPID 와 같은 추가 정보를 표시하며 전체 프로세스 목록을 표시함 )
ps -aux
위 예시는 ps -ef 와 유사하지만 다른 옵션을 사용하여 프로세스의 정보를 출력하는 명령어이다.
( 모든 사용자의 프로세스를 보여주며, 사용자 관련 상세 정보와 터미널 여부를 표시함 )
ps -ef | grep <텍스트>
위 예시는 ‘ps -ef’ 의 출력을 ‘grep’ 명령어의 입력으로 전달 받아, <텍스트> 가 포함된 라인을 찾아 출력하는 명령어이다.
*grep : (Global Regular Expression Print) 의 약자로 텍스트를 검색하고 출력하는데 사용되는 명령어
kill 명령어
kill 명령어는 리눅스 및 유닉스 기반 시스템에서 프로세스를 종료하는 명령어로 kill 명령어를 사용하여 프로세스에 종료 시그널을 보낼 수 있다. 종료 시그널은 프로세스에게 특정 동작을 수행하도록 지시한다.
kill [옵션] [프로세스 ID]
[kill 옵션]
- ‘-9’ 또는 -KILL , –signal=9 : 강제로 프로세스를 종료하는 신호이다
- ‘-15’ -TERM, –signal=15 : 기본적인 종료 시그널 신호이다
[ SIGNAL 목록 ]
번호 | 시그널 | 의미 |
1 | SIGHUP | 종료 |
2 | SIGINT | 인터럽트 종료 |
3 | SIGQUIT | 종료 후 코어 덤프 파일 생성 |
4 | SIGILL | 잘못된 명령어 신호 |
5 | SIGRAP | 디버깅 목적으로 사용되는 신호 |
6 | SIGABRT | 중단 신호 |
7 | SIGBUS | 프로세스 버스 오류 |
8 | SIGFPE | 0으로 나눌 때 발생하여 종료되는 신호 |
9 | SIGKILL | 강제 종료 |
10 | SIGUSR1 | 사용자 정의 조건 신호 |
11 | SIGSEGV | 프로세스가 오작동할 때 커널에 의해 프로세스로 전송되는 신호 |
12 | SIGUSR2 | 사용자 정의 조건 신호 |
13 | SIGPIPE | 구문이 이상한 파이프에 대한 신호 |
14 | SIGALRM | real-time 또는 clock-time이 종료되면 전송되는 신호 |
15 | SIGTERM | 실행 중지를 프로세스에 요청하는 신호 |
16 | SIGSTKFLT | 스택 오류 신호 |
17 | SIGCHLD | 상위 프로세스가 하위 프로세스를 잃으면 상위 프로세스에 전송되는 신호 |
18 | SIGCONT | 프로세스가 SIGTSTP 또는 SIGSTOP 신호에 의해 중지된 후 계속 실행되게 하는 신호 |
19 | SIGSTOP | 프로세스 일시 중지, 프로세스가 신호 무시 불가 |
20 | SIGTSTP | 프로세스 일시 중지, 프로세스가 신호 무시 가능 |
21 | SIGTTIN | 프로세스가 tty에서 읽기 시도를 하면 프로세스가 받는 신호 |
22 | SIGTTOU | 프로세스가 tty에서 쓰기 시도를 하면 프로세스가 받는 신호 |
23 | SIGURG | 긴급하게 읽을 데이터가 있거나 데이터가 매우 큰 경우 프로세스에 보내는 신호 |
24 | SIGXCPU | 할당된 시간을 초과하여 CPU를 사용하는 경우 시스템이 프로세스에 보내는 신호 |
25 | SIGXFSZ | 파일을 생성할 때 허용하는 크기를 넘을 경우 발생하는 신호 |
26 | SIGVTALRM | 프로세스에서 사용하는 CPU의 시간이 경과하면 전송되는 신호 |
27 | SIGPROF | 시스템이 사용하는 CPU 시간이 경과할 때 전송하는 신호 |
28 | SIGWINCH | 프로세스가 크기를 변경하는 터미널에 있을 때 받는 신호 |
29 | SIGIO | SIGPOLL의 별칭, SIGPOLL : 비동기 I/O 이벤트가 발생하면 프로세스에 전송하는 신호 |
30 | SIGPWR | 전원 장애를 인해 시스템이 프로세스에 보내는 신호 |
31 | SIGSYS | 시스템 호출에 유효하지 않은 매개변수를 제공하는 프로세스에게 전송하는 신호 |
pkill 명령어
pkill은 프로세스 이름이나 조건을 기반으로 프로세스를 종료하는 명령어이다.
특정 패턴에 매치되는 프로세스들을 간단하게 종료하는 데 사용된다.
pkill [옵션] 패턴
[pkill 옵션]
- ‘-9’ 또는 -KILL , (–signal=9) : 강제로 프로세스를 종료하는 신호이다
- ‘-15’ -TERM, (–signal=15) : 기본적인 종료 시그널 신호이다
- ‘-u’ 다음에 오는 User가 실행시킨 프로세스를 종료하는 옵션이다.
pkill 예시:
pkill -9 Fullmoon
위 예시는 “Fullmoon” 이라는 이름을 가진 모든 프로세스에게 강제 종료 시그널을 보내는 명령어이다.
pkill -u <username>
위 예시는 “<username>” 에 해당하는 User 가 실행시킨 프로세스를 모두 종료하는 명령어이다.