리눅스 killall
IT 위키
더 많은 작업
프로세스 이름을 지정하여 같은 이름의 모든 프로세스에 시그널을 보낸다.
- kill이 PID를 인자로 받는 것과 달리 killall은 프로세스 이름을 인자로 받는다.
- 시그널을 지정하지 않으면 SIGTERM(15)을 보낸다.
- psmisc 패키지에 포함되어 있다.
- 경로 : /usr/bin/killall
$ killall [옵션] [-s 시그널 | -시그널] 프로세스이름...
- -s, --signal 시그널 : 보낼 시그널을 지정한다. -9, -KILL, -SIGKILL처럼 시그널을 바로 지정할 수도 있다.
- -l, --list : 사용할 수 있는 시그널 이름 목록을 출력한다.
- -e, --exact : 이름이 긴(15자 초과) 프로세스를 정확히 일치할 때만 대상으로 한다.
- -I, --ignore-case : 프로세스 이름의 대소문자를 구분하지 않는다.
- -i, --interactive : 시그널을 보내기 전에 프로세스마다 확인을 요청한다.
- -u, --user 사용자 : 지정한 사용자가 소유한 프로세스만 대상으로 한다.
- -g, --process-group : 해당 프로세스가 속한 프로세스 그룹 전체에 시그널을 보낸다.
- -r, --regexp : 프로세스 이름을 확장 정규 표현식으로 해석한다.
- -o, --older-than 시간 / -y, --younger-than 시간 : 지정한 시간보다 오래된/최근에 시작된 프로세스만 대상으로 한다. (s, m, h, d, w, M, y 단위)
- -v, --verbose : 시그널 전송 성공 여부를 출력한다.
- -q, --quiet : 대상 프로세스가 없어도 메시지를 출력하지 않는다.
- -w, --wait : 대상 프로세스가 모두 종료될 때까지 기다린다.
# httpd 이름의 모든 프로세스를 종료(SIGTERM)한다. # killall httpd # 응답이 없는 firefox 프로세스를 강제 종료(SIGKILL)한다. $ killall -9 firefox # sshd 프로세스에 SIGHUP을 보내 설정을 다시 읽게 한다. # killall -HUP sshd # user1 사용자의 모든 bash 프로세스를 종료한다. # killall -u user1 bash # 종료 전에 하나씩 확인한다. $ killall -i sleep # 사용할 수 있는 시그널 목록을 출력한다. $ killall -l
- kill은 PID, killall은 프로세스 이름을 인자로 받는다는 차이가 자주 출제된다.
- 주요 시그널 번호 : SIGHUP(1), SIGINT(2), SIGKILL(9), SIGTERM(15, 기본값), SIGCONT(18), SIGSTOP(19), SIGTSTP(20)
- killall -9 프로세스명, killall -HUP 프로세스명 같은 형식의 빈칸 채우기 문제가 나온다.