본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

프로세스 이름이나 사용자, 터미널 등의 조건에 맞는 프로세스를 찾아 시그널을 보낸다.

  • pgrep과 같은 검색 조건을 사용하며, PID를 출력하는 대신 시그널을 보낸다.
  • 시그널을 지정하지 않으면 SIGTERM(15)을 보낸다.
  • 프로세스 이름은 정규 표현식으로 부분 일치 검색된다.
  • procps-ng 패키지에 포함되어 있다.
  • 경로 : /usr/bin/pkill
$ pkill [-시그널] [옵션] [패턴]
  • -시그널, --signal 시그널 : 보낼 시그널을 번호나 이름으로 지정한다. (예: -9, -KILL, --signal HUP)
  • -f, --full : 프로세스 이름뿐 아니라 전체 명령행을 패턴과 비교한다.
  • -x, --exact : 프로세스 이름이 패턴과 정확히 일치하는 경우만 대상으로 한다.
  • -u, --euid 사용자 : 지정한 유효 사용자(EUID)의 프로세스만 대상으로 한다.
  • -U, --uid 사용자 : 지정한 실제 사용자(UID)의 프로세스만 대상으로 한다.
  • -G, --group 그룹 : 지정한 실제 그룹(GID)의 프로세스만 대상으로 한다.
  • -t, --terminal 터미널 : 지정한 제어 터미널(예: pts/1)에 연결된 프로세스만 대상으로 한다.
  • -P, --parent PPID : 지정한 부모 프로세스의 자식 프로세스만 대상으로 한다.
  • -g, --pgroup PGID : 지정한 프로세스 그룹의 프로세스만 대상으로 한다.
  • -n, --newest : 조건에 맞는 프로세스 중 가장 최근에 시작된 하나만 대상으로 한다.
  • -o, --oldest : 조건에 맞는 프로세스 중 가장 오래된 하나만 대상으로 한다.
# 이름에 httpd가 포함된 프로세스를 종료한다.
# pkill httpd

# pts/1 터미널에 연결된 모든 프로세스를 강제 종료한다. (해당 터미널 사용자 강제 로그아웃)
# pkill -9 -t pts/1

# user1 사용자의 모든 프로세스를 종료한다.
# pkill -u user1

# rsyslogd에 SIGHUP을 보내 설정을 다시 읽게 한다.
# pkill -HUP rsyslogd

# 명령행 전체에 backup.sh가 포함된 프로세스를 종료한다.
$ pkill -f backup.sh
  • 특정 터미널 사용자를 강제로 로그아웃시키는 pkill -9 -t pts/번호 형식이 자주 출제된다.
  • 특정 사용자의 프로세스를 종료하는 -u 옵션을 묻는 문제가 나온다.
  • 패턴은 부분 일치이므로 정확히 일치시키려면 -x 옵션을 쓴다.