컴퓨팅에서, kill은 여러 인기 있는 운영 시스템에서 실행 중인 프로세스에 신호를 보내기 위해 사용되는 명령입니다.
Implementations
Unix and Unix-like
유닉스와 유닉스-계열 운영 시스템에서, kill은 프로세스에 신호를 보내기 위해 사용되는 명령입니다. 기본적으로, 전송된 메시지는 프로세스 종료를 요청하는 종료 신호입니다. 그러나 kill은 때때로 잘못된 명칭입니다; 전송된 신호는 프로세스 종료와 관련이 없을 수 있습니다. kill 명령은 숫자 프로세스 ID (PID) 또는 프로세스 그룹 ID (PGID)로 참조되는 시스템에서 프로세스 또는 프로세스 그룹에 신호를 보내는 kill() 시스템 호출에 대한 래퍼입니다. kill은 항상 POSIX 표준에 정의된 대로 독립 실행형 유틸리티로 제공됩니다. 어쨌든, 대부분의 쉘은 그것과 약간 다를 수 있는 내장 kill 명령을 가집니다.
비록 사용자가 일반적으로 가장 관심을 갖는 신호는 SIGTERM ("종료") 및 SIGKILL ("죽임")이지만 보낼 수 있는 많은 다른 신호가 있습니다 (전체 목록에 대해 신호를 참조하십시오). 전송된 기본 신호는 SIGTERM입니다. 이 신호를 처리하는 프로그램은 종료하기 전에 유용한 정리 작업 (예를 들어, 구성 정보를 파일에 저장)을 수행할 수 있습니다. 어쨌든, 많은 프로그램이 이 신호에 대해 특수 처리기를 구현하지 않고, 따라서 대신 기본 신호 처리기가 호출됩니다. 때로는, 심지어 특별한 처리기를 가지는 프로세스라도 신호를 적절한 처리로부터 그것을 막아서 잘못될 수 있습니다.
SIGKILL와 SIGSTOP ("중지")을 제외한 모든 신호는 프로세스에 의해 "인터셉트"될 수 있으며, 특수 함수가 프로그램이 그들 신호를 수신할 때 호출될 수 있음을 의미합니다. 두 가지 예외 SIGKILL와 SIGSTOP은 오직 호스트 시스템의 커널에서 볼 수 있으며, 프로세스 실행을 제어하는 안정적인 방법을 제공한다는 조건 아래에서 그렇습니다. SIGKILL은 프로세스를 죽이고, SIGSTOP은 SIGCONT ("계속")가 수신될 때까지 프로세스를 일시 중지합니다.
유닉스는 권한 없는 사용자를 다른 프로세스를 죽이려는 것으로부터 방지하기 위한 보안 메커니즘을 제공합니다. 필수적으로, 하나의 프로세스를 또 다른 프로세스에 보내기 위해서, 신호 프로세스의 소유자가 수신 프로세스의 소유자와 같거나 수퍼유저여야 합니다.
사용 가능한 신호 모두는 다른 이름을 가지고, 특정 숫자에 매핑됩니다. 숫자와 신호 사이의 특정 매핑은 유닉스 구현에 따라 다를 수 있음을 주목하는 것이 중요합니다. SIGTERM은 종종 15로 번호가 매겨지고 SIGKILL은 종종 9로 번호가 매겨집니다.
Examples
프로세스는 4가지 방법으로 SIGTERM 신호를 보낼 수 있습니다 (프로세스 ID는 이 경우에서 '1234'입니다):
kill 1234
kill -s TERM 1234
kill -TERM 1234
kill -15 1234
프로세스는 세 가지 방법으로 SIGKILL 신호를 보낼 수 있습니다:
kill -s KILL 1234
kill -KILL 1234
kill -9 1234
다른 유용한 신호로는 HUP, TRAP, INT, SEGV 및 ALRM을 포함합니다. HUP는 SIGHUP 신호를 보냅니다. Apache와 Sendmail을 포함한 일부 데몬은 SIGHUP을 수신하여 구성 파일을 다시 읽으므로, kill 명령이 역시 사용될 수 있습니다. SIGINT 신호는 대부분의 유닉스 쉘에서 CTRL+C를 누름으로써 매우 간단하게 생성될 수 있습니다. 역시 CTRL+Z가 SIGTSTP ("터미널 정지")에 매핑되고 CTRL+\ (백슬래시)가 SIGQUIT에 매핑되는 것이 공토적이고, 이것은 프로그램을 코어 덤프를 수행하도록 강제할 수 있습니다.
Related programs
- killall – 솔라리스와 같은 일부 유닉스의 변형에서, 이 유틸리티는 시스템이 종료를 통해 갈 때 자동으로 호출됩니다. 그것은 위의 kill 명령과 매우 유사하게 작동하지만, 개별 프로세스에 신호를 보내는 대신, 그 신호는 시스템의 모든 프로세스에 보내집니다. 어쨌든, IRIX, 리눅스, 및 FreeBSD와 같은 다른 시스템에서, 인수가 종료할 프로세스 (또는 프로세스들)의 이름을 지정하기 위해 제공됩니다. 예를 들어, xmms에 의해 호출된 XMMS 음악 플레이어의 인스턴스와 같은 프로세스를 종료하려면, 사용자가 killall xmms 명령을 실행합니다. 이것은 xmms라는 이름의 모든 프로세스를 종료하고, 솔라리스와 같은 시스템에서 kill `pidof xmms`와 동등합니다.
- pkill – 이름과 기타 속성을 기반으로 프로세스에 신호를 보냅니다. 그것은 솔라리스 7에서 도입되었고 이후 리눅스, NetBSD와 OpenBSD에 대해 다시 구현되었습니다. pkill은 이름을 기반으로 프로세스를 종료하는 것이 훨씬 더 편리합니다: 예를 들어, pkill 없이 (및 pgrep 없이) firefox라는 프로세스를 죽이기 위해, 우리는 kill `ps --no-headers -C firefox -o pid`를 입력해야 하지만 pkill과 함께, 간단히 pkill firefox를 입력할 수 있습니다.
- xkill – 만약 임의의 매개변수 없이 호출되면, 마우스 커서가 화살표에서 "x" 아이콘으로 바뀌고, 사용자는 창을 클릭하여 X 서버가 창을 소유한 클라이언트와의 연결을 닫도록 할 수 있습니다. 이것은 종종 X 서버에 대한 연결이 닫혔음을 감지할 때 프로세스를 종료하게 되는 원인이 됩니다.
Microware OS-9
kill 명령은 역시 OS-9에서 쉘 내장으로 사용할 수 있습니다. 그것은 프로세스 ID로 다른 프로세스를 종료하기 위해 사용됩니다.
Example
프로세스 ID "7"을 갖는 프로세스를 중지합니다:
$ kill 7
Microsoft Windows and ReactOS
마이크로소프트의 명령줄 인터프리터 Windows PowerShell에서, kill은 Stop-Process cmdlet에 대해 미리-정의된 명령 별칭입니다.
Microsoft Windows XP, Vista 및 7은 프로세스를 종료하기 위한 taskkill 명령을 포함합니다. 이 명령의 보통 구문은 taskkill /im "IMAGENAME"입니다. "지원되지 않는" kill 버전은 Windows 98에서 사용할 수 있는 Microsoft Windows Resource Kit의 여러 출시에 포함되었습니다.
kill의 GNU 버전은 Cygwin을 통해 이식되었고 유닉스에 대해 Microsoft Windows Services가 제공하는 유닉스 환경 하위시스템 내부에서 실행됩니다 (마이크로소프트는 1999년 9월 17일 Softway Systems 및 Interix 제품을 구입하여 유닉스에 대해 Windows 서비스를 도매로 인수했습니다).
ReactOS 구현은 윈도우 변형을 기반으로 합니다. 그것은 Andrew Riedi, Andrew Nguyen 및 He Yang에 의해 개발되었습니다. 그것은 GPLv2.1 이상에 따라 라이선스가 부여됩니다.
Examples
마이크로소프트에서 개발하고 10MB 이상의 메모리를 사용하는 문자 "p"로 시작하는 모든 프로세스를 찾고 그것들을 죽입니다:
PS C:\> ps p* | where { $_.Company -like "Microsoft*" -and $_.WorkingSet -gt 10MB } | kill -confirm
Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "powershell (6832)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): A
PS C:\>
다음은 Explorer.exe 프로세스를 종료하도록 요청하는 간단한 예입니다:
PS C:\> taskkill /im explorer.exe
이 예에서는 프로세스를 강제 종료합니다:
PS C:\> taskkill /f /im explorer.exe
프로세스는 PID 번호에 의해 종료될 수도 있습니다:
PS C:\> taskkill /pid 3476
Microsoft Singularity
Microsoft Research의 마이크로커널 운영 시스템 Singularity에 대해 표준 쉘, Singularity 쉘은 백그라운드 프로세스를 종료하기 위해 kill 명령을 포함합니다.
Examples
"SampleProcess"라는 이름의 프로세스를 중지합니다:
Singularity>kill SampleProcess
프로세스 식별자 "42"를 사용하여 프로세스를 중지합니다:
Singularity>kill 42
Plan 9 from Bell Labs
Bell Labs의 Plan 9 아래에서, kill 프로그램은 실제로 이 종료를 수행하지 않고, 프로세스 ID를 사용하지도 않습니다. 오히려, 그것은 프로세스의 실제 이름을 가져와서 Plan 9에서 사용되는 쉘, rc에 대해 명령을 출력하여 프로세스를 죽입니다.
제공되는 유사한 명령은 slay라고 불리고, 이것은 같은 작업을 수행하지만 이러한 방식으로 죽음을 거부하는 프로세스에 사용됩니다.
Examples
예를 들어, troff의 모든 인스턴스를 죽이기 위해, 다음을 입력합니다:
kill troff | rc
Others
kill 명령은 역시 IBM i 운영 시스템에 이식되었습니다.
Further reading
- McElhearn, Kirk (2006). The Mac OS X Command Line: Unix Under the Hood. John Wiley & Sons. ISBN 978-0470113851.
External links
- Command: kill – Commands & Utilities Reference, The Single UNIX Specification, Issue 7 from The Open Group
- System call: kill – System Interfaces Reference, The Single UNIX Specification, Issue 7 from The Open Group
- kill(1) – Plan 9 Programmer's Manual, Volume 1
- kill(1) – Inferno General commands Manual
- kill(1) – Linux User Commands Manual