리눅스는 훌륭하고 고급 운영 체제이지만 완벽하지는 않습니다. 때때로 일부 응용 프로그램이 비정상적으로 작동하기 시작하여 응답하지 않거나 많은 시스템 리소스를 소모하기 시작할 수 있습니다. 원래 응용 프로그램 프로세스가 완전히 종료되지 않기 때문에 응답하지 않는 응용 프로그램을 다시 시작할 수 없습니다. 유일한 해결책은 시스템을 다시 시작하거나 응용 프로그램 프로세스를 중지하는 것입니다.
가장 일반적으로 사용되는 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
신호는 세 가지 방법으로 지정할 수 있습니다.
숫자(예: -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로, 지정된 프로세스를 종료합니다.
'SW > 리눅스' 카테고리의 다른 글
Linux : Nginx 시작, 중지, 재시작 방법, 예제, 명령어 (0) | 2022.05.09 |
---|---|
Linux : Time Zone 설정, 변경 방법, 예제, 명령어 (0) | 2022.05.08 |
Linux : /etc/passwd 파일 이해 방법, 예제, 명령어 (0) | 2022.05.06 |
Linux : CentOS 8 : VirtualBox 설치 방법, 예제, 명령어 (0) | 2022.05.05 |
Linux : Debian 10 : Redis 설치, 구성 방법, 예제, 명령어 (0) | 2022.05.04 |