응답이 없는 프로세스나 불필요한 프로세스를 강제로 종료하려면 해당 프로세스의 PID를 알아야 합니다. ps -ef나 ps aux 명령으로 프로세스의 정보를 확인하면 PID와 PPID를 알 수 있습니다. 프로세스를 종료하는 데는 kill이나 pkill 명령을 사용합니다. 이 명령들은 프로세스에 시그널을 보내어 프로세스를 종료합니다.
시그널
시그널은 프로세스에 무슨 일이 발생했음을 알려주는 메시지입니다. 이 메시지에는 어떤 일이 발생했는지 알려주는 상수를 사용합니다. 시그널은 번호로 분류되고, 각각 이름을 가지고 있습니다. 시그널을 받은 프로세스는 기본적으로 종료됩니다. 리눅스에서 지원하는 시그널의 목록은 kill -l 명령으로 확인이 가능합니다.
모든 SIG 리스트입니다. 종류가 굉장히 많은데, 주요 시그널을 알아보겠습니다.
주요 시그널
시그널 | 번호 | 기본 처리 | 의미 |
SIGHUP | 1 | 종료 | 터미널과의 연결이 끊어졌을 때 발생한다. |
SIGINT | 2 | 종료 | 인터럽트로 사용자가 CTRL-C를 입력하면 발생한다. |
SIGQUIT | 3 | 종료, 코어덤프 | 종료 신호로 사용자가 CTRL-\을 입력하면 발생한다. |
SIGKILL | 9 | 종료 | 이 시그널을 받은 프로세스는 무시할 수 없으며 강제종료된다. |
SIGALRM | 14 | 종료 | 알람에 의해 발생한다. |
SIGTERM | 15 | 종료 | kill 명령이 보내는 기본 시그널이다. |
주요 시그널은 위와 같습니다.
kill 명령으로 프로세스 종료하기
kill 명령은 인자로 지정한 프로세스에 시그널을 전달합니다. 프로세스는 각 시그널을 받았을 때 어떻게 처리할지 동작이 지정되어 있습니다. 15번 시그널은 일반적으로 프로세스 종료지만, 시그널을 무시하거나 다른 동작을 하도록 지정되어 있다면 프로세스가 종료되지 않을 수도 있습니다.
kill 명령에서 시그널을 따로 지정하지 않는다면, 기본적으로 15번 시그널으로 간주됩니다.
9번 시그널은 강제 종료이므로 어떤 행동을 하더라도 무조건 종료되기 때문에 이에 유의해야 합니다. 다만 좀비 프로세스의 경우에는 종료되지 않을 수도 있습니다.
kill | 설명 |
기능 | 지정한 시그널을 프로세스에 보낸다. |
형식 | KILL [-시그널] PID |
시그널 | 2 : 인터럽트 시그널을 보낸다. (ctrl + c) 9 : 프로세스를 강제로 종료한다. 15 : 프로세스와 관련된 파일을 정리한 후 종료한다. 종료되지 않는 프로그램이 있을 수도 있다. |
사용 예 | kill 1001 kill -9 1001 kill -15 1001 |
kill 명령어를 사용할 때에는 -9 시그널을 유의하면서 사용해야 합니다. 만일 중요 프로세스라면 단순 kill 명령어로 종료 되지 않을 가능성이 높은데, -9 시그널을 적용하면 무조건 종료되기 때문에, 해당 프로세스로 인해 다른 프로세스에까지 영향을 끼칠 염려가 있습니다.
때문에 -9 시그널이 굉장히 강력한 옵션이라는 것을 인지하고, 조심해서 사용해야 됩니다.
'Ubuntu Linux' 카테고리의 다른 글
리눅스 시스템의 부팅 (3) (0) | 2022.05.23 |
---|---|
리눅스 시스템의 부팅 (1) (0) | 2022.05.21 |
프로세스 관리 명령 (2) (0) | 2022.05.20 |
프로세스 관리 명령 (1) (0) | 2022.05.19 |
특수 접근 권한 (0) | 2022.05.19 |