SW/리눅스

Linux : Kill 명령어, 사용 방법, 예제

얇은생각 2022. 5. 7. 07:30
반응형

리눅스는 훌륭하고 고급 운영 체제이지만 완벽하지는 않습니다. 때때로 일부 응용 프로그램이 비정상적으로 작동하기 시작하여 응답하지 않거나 많은 시스템 리소스를 소모하기 시작할 수 있습니다. 원래 응용 프로그램 프로세스가 완전히 종료되지 않기 때문에 응답하지 않는 응용 프로그램을 다시 시작할 수 없습니다. 유일한 해결책은 시스템을 다시 시작하거나 응용 프로그램 프로세스를 중지하는 것입니다.

가장 일반적으로 사용되는 kill을 사용하여 잘못된 프로세스를 종료할 수 있는 몇 가지 유틸리티가 있습니다.

 

 

Linux : Kill 명령어, 사용 방법, 예제

 

 

Kill Command

킬은 Bash와 Zsh와 같은 본에서 파생된 대부분의 조개껍질에 내장된 조개껍질입니다. 명령 동작은 셸과 독립 실행형 /bin/kill 실행 파일 간에 약간 다릅니다.

type 명령을 사용하여 시스템에서 킬을 포함하는 모든 위치를 표시합니다.

type -a kill

# kill is a shell builtin
# kill is /bin/kill

 

 

위의 출력은 셸 내장형이 독립 실행형 실행 파일보다 우선 순위가 있으며 kill을 입력할 때마다 사용됩니다. 바이너리를 사용하려면 /bin/kill 파일의 전체 경로를 입력합니다. 이 기사에서는 Bash 내장 기능을 사용할 것입니다.

kill 명령의 구문은 다음과 같은 형식을 취합니다.

kill [OPTIONS] [PID]...

 

 

kill 명령은 지정된 프로세스 또는 프로세스 그룹에 신호를 보내 신호에 따라 작동하도록 합니다. 신호가 지정되지 않은 경우 기본값은 -15(-TERM)입니다.

가장 일반적으로 사용되는 신호는 다음과 같습니다.

- 1(HUP) - 프로세스를 다시 로드합니다.

- 9(KILL) - 프로세스를 제거합니다.

- 15(TERM) - 프로세스를 정상적으로 중지합니다.

 

사용 가능한 모든 신호 목록을 가져오려면 -l 옵션을 사용하여 명령을 호출합니다.

kill -l

 

Linux : Kill 명령어, 사용 방법, 예제 2

 

 

신호는 세 가지 방법으로 지정할 수 있습니다.

숫자(예: -1 또는 -s 1)를 사용합니다.

"SIG" 접두사(예: -SIGUP 또는 -s SIGUP)를 사용합니다.

"SIG" 접두사(예: -HUP 또는 -s HUP)가 없습니다.

 

다음 명령은 서로 동일합니다.

kill -1 PID_NUMBER
kill -SIGHUP PID_NUMBER
kill -HUP PID_NUMBER

 

 

kill 명령에 제공된 PID는 다음 중 하나일 수 있습니다.

PID가 0보다 크면 ID가 PID와 동일한 프로세스로 신호가 전송됩니다.

PID가 0이면 현재 프로세스 그룹의 모든 프로세스로 신호가 전송됩니다. 즉, 이 신호는 킬 명령을 호출한 셸의 GID에 속하는 모든 프로세스로 전송됩니다. 프로세스 그룹 ID(GID)를 보려면 ps -efj 명령을 사용합니다.

PID가 -1과 같으면 이 신호는 사용자가 명령을 실행하는 것과 동일한 UID를 가진 모든 프로세스로 전송됩니다. 호출 사용자가 루트인 경우 init 및 kill 프로세스 자체를 제외한 모든 프로세스로 신호가 전송됩니다.

PID가 -1보다 작으면 GID가 PID의 절대값과 동일한 프로세스 그룹 eq의 모든 프로세스로 신호가 전송됩니다.

 

일반 사용자는 자신의 프로세스로 신호를 보낼 수 있지만 다른 사용자의 프로세스는 보낼 수 없습니다. 반면 루트 사용자는 다른 사용자의 프로세스로 신호를 보낼 수 있습니다.

 

 

 

Kill 명령을 사용하여 프로세스를 종료

kill 명령으로 프로세스를 종료하거나 종료하려면 먼저 프로세스 ID 번호(PID)를 찾아야 합니다. top, ps, pidof 및 pgrep과 같은 다른 명령을 사용하여 이 작업을 수행할 수 있습니다.

파이어폭스 브라우저가 응답하지 않는다고 가정해봅시다. 파이어폭스 프로세스를 중지해야 합니다. 브라우저 PID를 찾으려면 pidof 명령을 사용합니다.

pidof firefox

# 6263 6199 6142 6076

 

 

명령은 모든 Firefox 프로세스의 ID를 인쇄합니다.

프로세스 번호를 알고 나면 TERM 신호를 전송하여 프로세스 번호를 모두 제거할 수 있습니다.

kill -9 6263 6199 6142 6076

 

 

PID를 검색한 다음 프로세스를 중지하는 대신 위의 명령을 하나로 결합할 수 있습니다.

kill -9 $(pidof firefox)

 

 

 

kill 명령을 사용하여 프로세스를 다시 로드

킬의 또 다른 일반적인 사용 사례는 프로세스에게 설정을 다시 로드하라고 알려주는 HUP 신호를 보내는 것입니다.

예를 들어 Nginx를 다시 로드하려면 마스터 프로세스에 신호를 보내야 합니다. Nginx 마스터 프로세스의 프로세스 ID는 일반적으로 /var/run 디렉토리에 있는 nginx.pid 파일에서 찾을 수 있습니다.

cat 명령을 사용하여 마스터 PID를 찾습니다.

cat /var/run/nginx.pid

# 30251

 

 

마스터 PID를 찾았으면 다음을 입력하여 Nginx 설정을 다시 로드합니다.

sudo kill -1 30251

 

 

위의 명령은 루트 또는 sudo 권한이 있는 사용자로 실행해야 합니다.

kill 명령은 프로세스에 신호를 보내는 데 사용됩니다. 가장 자주 사용되는 신호는 SIGKILL 또는 -9로, 지정된 프로세스를 종료합니다.

반응형