기계적 인조 인간

리눅스에서 킬 명령

가상화 도입! 비싸잖아? 모르는 소리

가상화 도입! 비싸잖아? 모르는 소리

차례:

Anonim

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

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

kill 명령

kill 은 Bash 및 Zsh와 같은 대부분의 Bourne 파생 쉘에 내장 된 쉘입니다. 셸과 독립 실행 형 /bin/kill 실행 파일의 명령 동작은 약간 다릅니다.

type 명령을 사용하여 kill : 포함하는 시스템의 모든 위치를 표시하십시오.

type -a kill

kill is a shell builtin kill is /bin/kill

위의 결과는 쉘 내장이 독립형 실행 파일보다 우선 순위를 가지며 kill 을 입력 할 때마다 사용된다는 것을 나타냅니다. 바이너리를 사용하려면 /bin/kill 파일의 전체 경로를 입력하십시오. Bash 내장을 사용합니다.

kill 명령의 구문은 다음과 같은 형식입니다.

kill…

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

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

  • 1 ( HUP )-프로세스를 다시로드하십시오. 9 ( KILL )-프로세스를 종료합니다. 15 ( TERM )-프로세스를 정상적으로 중지합니다.

사용 가능한 모든 신호 목록을 얻으려면 -l 옵션과 함께 명령을 호출하십시오.

kill -l

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

  1. 숫자 사용 (예: -1 또는 -s 1 ). "SIG"접두사 사용 (예: -SIGHUP 또는 -s SIGHUP ) "SIG"접두사없이 (예: -HUP 또는 -s HUP )

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

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

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

  • PID 가 0보다 크면 신호는 ID가 PID 와 동일한 프로세스로 전송되고 PID 가 0이면 신호는 현재 프로세스 그룹의 모든 프로세스로 전송됩니다. 즉, 신호는 kill 명령을 호출 한 쉘의 GID에 속하는 모든 프로세스로 전송됩니다. ps -efj 명령을 사용하여 프로세스 그룹 ID (GID)를 봅니다. PID -1 과 같으면 명령을 호출 한 사용자와 동일한 UID를 가진 모든 프로세스에 신호가 전송됩니다. 호출하는 사용자가 루트 인 경우 신호는 init 및 kill 프로세스 자체를 제외한 모든 프로세스로 전송됩니다.PID가 -1 미만인 경우 신호는 프로세스 그룹 eq의 모든 프로세스로 전송됩니다. PID

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

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

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

Firefox 브라우저가 응답하지 않아 Firefox 프로세스를 종료해야한다고 가정 해 봅시다. 브라우저 PID를 찾으려면 pidof 명령을 사용하십시오.

pidof firefox

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

6263 6199 6142 6076

프로세스 번호를 알면 TERM 신호를 전송하여 모든 프로세스 번호를 종료 할 수 있습니다.

kill -9 2551 2514 1963 1856 1771

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

kill -9 $(pidof firefox)

kill 명령을 사용하여 프로세스 재로드

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 , 주어진 프로세스를 종료합니다.

터미널을 죽이다