pkill과 Killall의 차이점은 무엇입니까?

pkill과 Killall의 차이점은 무엇입니까?

나는 pkill거기보다 더 많은 필터링 규칙이 있다는 것을 알고 있습니다 killall. 내 질문은 다음의 차이점은 무엇입니까?

pkill [signal] name

그리고

killall [signal] name

killall나는 이것이 더 효율적이며 name프로그램과 일치하는 모든 프로세스와 하위 프로세스를 (그리고 재귀적으로) 종료한다는 것을 읽었습니다 . pkill당신도 이런 일을 하지 않습니까?

답변1

이것pgrep그리고pkill유틸리티는 Sun의 Solaris 7에 도입되었습니다.g33klord가 지적했어요, 실행 중인 프로세스의 이름과 일치하는 패턴을 인수로 사용합니다. pgrep일치하는 프로세스 목록만 인쇄되지만 지정된 pkill신호(또는 SIGTERM기본값)가 프로세스로 전송됩니다. pgrep와 사이의 공통 옵션과 의미 체계는 주의를 기울여 먼저 를 사용하여 일치하는 프로세스 목록을 확인한 다음 을 사용하여 해당 프로세스를 계속 종료하려는 경우에 유용합니다. 그리고 제공되는pkillpgreppkillpgreppkill프로세스/proc다음과 같은 다른 파일 시스템 유틸리티 도 제공하는 패키지ps,top,free,uptime다른 것들 사이.

killall명령은 다음에서 제공됩니다.여러 가지 잡다한단, pkill기본적으로 신호가 전송될 프로세스를 결정할 때 매개변수 이름과 정확히 일치합니다(최대 처음 15자). 15자보다 긴 이름에 대해 정확한 일치를 요구하도록 -e옵션을 지정할 수 있습니다 . 이는 에 비해 사용하기에 더 안전합니다 . 지정된 매개변수에 슬래시( ) 문자가 포함된 경우 매개변수는 파일 이름으로 해석되고 해당 특정 파일을 실행하는 프로세스가 신호 수신자로 선택됩니다. 프로세스 이름의 정규식 일치도 , 옵션을 통해 지원 됩니다.--exactkillallpkill/killall-r--regexp

다른 차이점도 있습니다. killall예를 들어, 명령에는 기간별로 프로세스를 일치시키는 옵션 ( -o, --older-than, 및 -y, )이 있으며 (이 옵션을 통해) 특정 터미널의 프로세스만 종료하도록 지시할 수 있습니다 . 분명히 두 명령 모두 특정 틈새가 있습니다.--younger-thanpkill-t

참고하시기 바랍니다,killall시스템 하위 항목에 대한 명령유닉스 시스템 V(특히태양의 솔라리스,IBM AIX그리고HP의 HP-UX) 죽이다모두특정 사용자가 종료할 수 있는 프로세스로, 루트로 실행하는 경우 시스템을 효과적으로 종료합니다.

Linux psmisc 유틸리티가 다음으로 포팅되었습니다.BSD(그리고 확장해서맥 OS X), 따라서 killall"이름으로 프로세스 종료" 의미를 따릅니다.

답변2

pkill언급한 필터와 재사용성이 높기 때문에 미래 세대를 가르칠 가치가 있습니다 pgrep. 동일한 방식으로 프로세스를 종료하고 재귀적으로 종료하지 않습니다( pgreptty를 사용하더라도 setid를 생각함) 또는 프로세스 그룹(작업 제어를 생각함)을 선택하십시오.

답변3

한 가지 차이점은 killall프로세스의 정확한 이름을 인수로 사용하는 반면 pkill부분 이름이나 전체 이름을 사용할 수 있다는 것입니다.

자세한 내용은 다음 질문을 참조하세요.pkill

답변4

방금 발견한 한 가지 차이점은 pkill -uuid를 허용한다는 것입니다. 그러나 killall -uuid를 사용자 이름으로 취급하십시오.

> killall -u 13081
Cannot find user 13081

관련 정보