[linux] 실행중인 프로세스 종료하는 법 (Unix/Linux환경)
리눅스에서 실행중인 프로세스를 확인하고 종료하는 명령어에 대해 알아보고자 한다.
쉘에서 현재 실행중인 프로그램이라면 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라고 나오는 프로세스는 우리가 종료하려 했던 자바 애플리케이션이 아님)