일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- union find
- 스토어드 프로시저
- Hash
- Two Points
- DP
- two pointer
- Stored Procedure
- String
- Brute Force
- binary search
- SQL
- 그래프
- Dijkstra
- 이진탐색
- Trie
- 다익스트라
- MYSQL
Archives
- Today
- Total
codingfarm
kill 본문
manpages.ubuntu.com/manpages/focal/en/man1/kill.1.html
- 프로세스에게 signal을 보내어 프로세스를 종료한다.
1. signal
- 프로세스에 무언가 발생했음을 알리는 간단한 메시지
- signal을 받은 프로세스는 기본적으로 종료된다.
- kill -l 명령으로 리눅스에서 지원하는 시그널 목록을 알 수 있다.
주로 쓰이는 시그널은 아래와 같다.
시그널 | 번호 | 기본 처리 | 의미 |
SIGHUP | 1 | 종료 | 터미널과의 연결이 끊어졌을 때 발생 |
SIGINT | 2 | 종료 | 인터럽트로 사용자가 `Ctrl + c`를 입력하면 발생 |
SIGQUIT | 3 | 종료, 코어 덤프 | 종료 신호로 사용자가 `Ctrl + \`을 입력하면 발생 |
SIGKILL | 9 | 종료 | 이 시그널을 받은 프로세스는 무시할 수 없으며 강제로 종료 된다. |
SIGALRM | 14 | 종료 | 15알람에 의해 발생한다. |
SIGTERM | 15 | 종료 | kill 명령이 보내는 기본 시그널이다. |
2. Kill 명령으로 프로세스 종료하기
kill [-signal] PID
- 지정한 시그널을 프로세스에 보낸다.
kill 1001
kill -9 1001
kill -15 1001
- 사용 예
실습을 위해 2개의 터미널을 사용한다.
터미널 1에서 프로세스를 실행하고, 터미널 2에서 해당 프로세스를 검색하여 종료한다.
먼저 터미널 1에서 man ps명령을 실행한다.
터미널 2에서 ps 명령으로 man 프로세스의 PID를 확인한다. grep과 pgrep 2가지 방법으로 알아낼 수 있다.
이제 kill 명령어를 이용하여 man 프로세스를 종료한다.
3. 강제 종료
kill 명령으로 간단히 종료되지 않은 경우가 있다.
이런경우 강제종료 시그널인 9번을 보내면된다.
터미널 1에서 sh를 실행한다.
터미널 2에서 sh 프로세스의 PID를 확인해본다.
kill 명령으로 프로세스 종료를 시도해보자.
종료되지 않는다. sh가 15번 시그널을 무시하도록 설정되어 있기 때문이다.
이번엔 강제 종료 시그널인 9번을 보내보자.
터미널1에서 sh 프로세스가 강제 종료된다.
pkill
- pkill은 PID가 아니라 프로세스의 명령 이름(CMD)로 프로세스를 찾아 종료한다.
- 같은 명령이 어려개 검색되면 한번에 모두 종료한다.
- 자신이 소유한 프로세스만 종료할 수 있다.
pkill <CMD>
- 사용 예
터미널 1과 터미널 2에서 man ps 명령으로 프로세스를 실행한다.
그리고 터미널 3에서 프로세스의 동작을 확인한다.
이제 pkill 명령으로 man 프로세스를 종료한다.
147은 root 계정이 소유중인 프로세스로 추정된다.
터미널1과 터미널2에서 프로세스가 종료되었음을 확인할 수 있다.
killall
- pkill 처럼 프로세스의 명령 이름(CMD)으로 프로세스를 찾아 종료한다.
Comments