웹 개발/linux

[linux] 실행중인 프로세스 종료하는 법 (Unix/Linux환경)

dani0312 2024. 1. 4. 16:59

리눅스에서 실행중인 프로세스를 확인하고 종료하는 명령어에 대해 알아보고자 한다.

 

 

쉘에서 현재 실행중인 프로그램이라면 ctrl+c 를 이용해 종료할 수 있겠지만,

백그라운드에서 동작하는 프로그램같은 경우는 어떻게 종료하는지 알아보자

 

 

PID 찾기

우선 프로세스를 종료하기 위해서는 이 프로세스의  `PID`를 알아야한다.

이 PID를 이용해  `kill`명령어로 종료시킬 것이기 때문이다.

 

 

`ps -aux`  또는  `ps -ef` 명령어를 사용할 수 있는데 본 글에서는  `ps -aux`를 사용할 것이다 

빠르게 찾을 수 있도록  `grep` 명령어를 이용해 우리가 원하는 키워드로 원하는 것을 찾도록 한다

ps -aux | grep <키워드>
	or
ps -ef | grep <키워드>

 

 

실행중인 자바 애플리케이션을 종료한다고 가정해보자. 

아래와 같이 명령어를 입력할 수 있다

ps -aux | grep java

 

 

2가지의 결과가 출력되었다. 실행중인 자바 애플리케이션을 종료할 것이므로 첫번째 줄의 jar 파일인 이 프로세스를 종료시켜야 한다. 

PID를 확인하니 216503이다. 

 

 

 

 

◾프로세스 종료하기

프로세스를 종료하는 명령어는  `kill`이다 아래와 같이 PID를 입력하여 종료시킨다. 

kill -15 <PID>

 

kill -15 216503 와 같이 입력하였다. 

 

💡 kill 옵션 알아보기

더보기
kill <옵션> <PID>

`-15` 또는 `TERM` (기본값) : 정상적인 종료를 시도한다. 프로세스가 정리 작업을 할 기회를 준다.

`-9` 또는 `KILL` : 강제로 프로세스를 종료한다. 프로세스가 정리 작업을 할 기회를 주지 않고 즉시 종료된다. 

 

 

 `ps -aux | grep java`명령어를 통해 현재 실행중인 프로세스를 다시 확인해보자 우리가 종료시킨 jar파일이 실행중인 프로세스에 보이지 않는다. 성공적으로 종료가 된 것을 알 수 있다.

맨 아래는 `143`은 종료 시그널 번호이다. 백그라운드에서 실행되는 프로세스가 종료되었음을 나타낸다. 만일 프로세스가 강제로 종료되었다면 [1]+ Exit 143 대신 [1]+ Killed와 같은 메시지가 나타났을 것이다. 

 

 

 

다시 확인하였을 때는 종료된 프로세스에 대한 정보는 이제 출력되지 않았고, 실행중인 프로세스만 출력되었다.

(참고로 아래 java라고 나오는 프로세스는 우리가 종료하려 했던 자바 애플리케이션이 아님)