KILLALL(1)

이름
killall - 지정한 이름의 프로세스를 강제로 끝냅니다

개요
killall [-Z, --context <패턴>] [-e, --exact] [-g, --process-group] [-i, --interactive] [-n, --ns PID] [-o, --older-than <시간>] [-q, --quiet] [-r, --regexp] [-s, --signal <시그널>, -<시그널>] [-u, --user <사용자>] [-v, --verbose] [-w, --wait] [-y, --younger-than <시간>] [-I, --ignore-case] [-V, --version] [--] <이름> ...
killall -l, --list
killall -V, --version

설명
killall은 지정 명령에 일치하는 모든 실행 프로세스에 시그널을 보냅니다. 지정한 시그널 이름이 없다면 SIGTERM을 보냅니다.

시그널은 이름(예: -HUP 또는 -SIGHUP), 번호(예: -i), -s 옵션으로 지정할 수 있습니다.

If the command name is not regular expression (option -r) and contains a slash (/), processes executing that particular file will be selected for killing, independent of their name.

killall은 각 명령에 대해 최소한 하나의 프로세스를 강제로 끝냈을 경우, 또는 -u와 -Z 검색 조건에 일치하는 하나 이상의 프로세스가 있지만 명령은 나타나지 않았을 경우 0 코드를 반환합니다. 이 경우가 아니라면 killall은 0이 아닌 값을 반환합니다.

A killall 프로세스는 자신을 강제로 끝내지 않습니다(만 다른 killall 프로세스를 강제로 끝낼 수 있습니다).

옵션

-e, --exact
    아주 긴 이름에 정확하게 일치해야합니다. 명령 이름이 15자 이상이면 전체 이름을 사용할 수 없을지도 모릅니다(예: 스와핑했을 떄). 이 경우, killall은 처음 15글자 내에 일치하느 모든 대상을 강제로 끝내며, -e 옵션을 지정하면 이 항목은 무시합니다. killall은 -v 옵션과 -e 옵션을 함께 지정하면 무시한 각 항목을 나타냅니다.

-I, --ignore-case
    대소문자를 구별하지 않고 프로세스 이름을 검색합니다.

-g, --process-group
    지정 프로세스에 속한 프로세스 그룹을 강제로 끝냅니다. 강제 종료 시그널은 동일한 프로세스 그룹에 여러 프로세스가 있다 하더라도 그룹당 한번씩만 보냅니다.

-i, --interactive
    강제로 끝내기 전 대화식으로 확인합니다.

-l, --list
    알려진 모든 시그널 이름을 나타냅니다.

-n, --ns
    주어진 PID 의 PID 이름 영역과 일치하는 항목을 찾습니다. 기본 동작은 모든 이름 영역에 일치하는 항목의 검색입니다.

-o, --older-than
    지정한 시간보다 오래된 (이전의) 프로세스만 검색합니다. 시간은 소숫점 숫자 다음 단위를 붙여 지정합니다. 지정 단위는 s,m,h,d,w,M,y이며, 각각 초,분,시간,일,주,월,년을 의미합니다.

-q, --quiet
    강제로 끝낸 프로세스가 없더라도 어떤 메시지도 출력하지 않습니다.

-r, --regexp
    프로세스 이름 패턴을 regex(3)에 따른 POSIX 확장 정규 표현식으로 해석합니다.

-s, --signal, -<시그널>
    SIGTERM 대신 지정 시그널을 보냅니다.

-u, --user
    지정 사용자가 소유한 프로세스만 강제로 끝냅니다. 명령 이름은 옵션입니다.

-v, --verbose
    시그널을 제대로 보냈을 경우 알려줍니다.

-V, --version
    버전 정보를 나타냅니다.

-w, --wait
    모든 프로세스를 끝낼 때까지 기다립니다. killall 에서는 강제로 끝낼 프로세스가 있는지 초단위로 확인하며 남아있는 프로세스가 없어지면 종료 코드를 반환합니다. 참고로 killall은 시그널을 무시했을 경우, 명령 결과가 나오지 않거나, 프로세스가 좀비 상태로 남아있다면 계속 기다릴 수도 있습니다.

-y, --younger-than
    지정한 시간보다 최근의 (이후의) 프로세스만 검색합니다. 시간은 소숫점 숫자 다음 단위를 붙여 지정합니다. 지정 단위는 s,m,h,d,w,M,y이며, 각각 초,분,시간,일,주,월,년을 의미합니다.

-Z, --context
    보안 컨텍스트를 지정합니다. 지정한 확장 정규 표현식 패턴에 일치하는 보안 컨텍스트의 프로세스만 강제로 끝냅니다. 명령행에서 다른 인자보다 앞서 지정해야합니다. 명령 이름은 옵션입니다.

파일

/proc
    proc 파일 시스템의 위치입니다

알려진 버그
파일 이름으로 강제로 끝내는 동작은 해당 파일을 열고 있는 실행 파일이 파일을 열고 있는 동안에만 동작합니다. 예를 들면, 이 방식으로는 잠깐 실행했다가 끝나는 실행 파일을 강제로 끝낼 수 없습니다.

killall을 입력할 때 <이름<은 특히 권한을 가진 사용자에 의해 리눅스 시스템이 아닌 곳에서 예상치 못한 동작을 할 수 있습니다.

killall -w 명령은 프로세스가 사라져서 동일한 PID를 가진 새 프로세스로 바뀌었을 경우 해당 프로세스를 찾아내지 못합니다.

프로세스가 이름을 바꾸었다면, killall에서 해당 프로세스를 정확하게 찾아낼 수 없습니다.

killall은 명령행에서 지정할 수 있는 이름에 제한이 있습니다. 이 구현체는 8배수 비부호 거대 정수형의 최대 크기만큼에 해당합니다. 32비트 시스템에서 한계는 32이며, 64비트 시스템에서는 64입니다.

추가 참조
kill(1), fuser(1), pgrep(1), pidof(1), pkill(1), ps(1), kill(2), regex(3).