kill, pkill 및 killall의 차이점은 무엇입니까


31

나는 kill명령에 대해 잘 알고 있으며 , 대부분 강제로 프로세스를 강제 종료하기 위해 kill -9를 사용하는데 사용할 수있는 다른 많은 신호가있다 kill. 그러나 kill 명령이 이미 있다면 pkilland 의 사용 사례가 무엇인지 궁금합니다 killall.

수행 pkillkillall사용 kill구현에 명령을? 나는 그것들이 단지 랩퍼 kill이거나 자신의 구현을 가지고 있다는 것을 의미 합니까?

또한 pgrep명령이 프로세스 이름에서 프로세스 ID를 얻는 방법을 알고 싶습니다 .

이 모든 명령이 동일한 기본 시스템 호출을 사용합니까? 성능 관점에서 어떤 것이 더 빠릅니까?


2
두 가지 : kill -9기본적으로 사용 하는 이유는 무엇 입니까? -15 (중지하십시오) 및 -1 (모뎀이 끊어졌습니다. 깨끗하게 닫으십시오)은 훨씬 더 정중합니다. 둘째로. 비 리눅스 박스에서 killall을 사용하는 것을 조심하십시오. 다르게 동작 할 수 있습니다. (예를 들어, 솔라리스에서는 모든 것을 죽입니다. 프로세스 이름에는 필터링되지 않습니다).
Hennes

답변:


31

kill명령은 kill 시스템 호출에 대한 매우 간단한 래퍼 이며 프로세스 ID (PID)에 대해서만 알고 있습니다. pkill그리고 killall또한에 래퍼 kill 시스템 호출 , (실제로, 직접 시스템 호출을 호출하는 libc의 라이브러리),하지만 등 프로세스 이름, 프로세스의 소유자, 세션 ID, 등을 기준으로 당신을위한 PID를을 확인할 수 있습니다

사용 하거나 작업 하는 방법 pkillkillall작업을 볼 수 있습니다 . Linux에서는 파일 시스템을 통해 읽고 , 찾은 각 pid (디렉토리)에 대해 프로세스 이름 또는 기타 속성으로 프로세스를 식별하는 방식으로 경로를 탐색합니다. 이 작업은 기술적으로, 커널 및 시스템에 따라 다릅니다. 일반적으로 명령 이름이 두 번째 필드로 포함되어 있습니다. 들어 와은 조사 각 PID의 PROC 항목에 대한 항목을.ltracestrace/proc/proc/<PID>/statpkill -fpgrep/cmdline

pkill그리고 pgrep사용 readproc하는 반면, 시스템 호출을 killall하지 않습니다. 성능 차이가 있는지 말할 수 없었습니다. 스스로 벤치마킹해야합니다.


2

kill 및 killall은 프로세스를 종료하는 방법을 제공하는 도구입니다. 첫 번째는 PID, 두 번째는 이름입니다. pgrep (list) 및 pkill (기본적으로 kill)은 이름 또는 기타 속성으로 프로세스에 메시지를 보내는 방법을 제공하는 도구입니다. http://linux.die.net/man/1/pkill 자세한 정보 신호 : http://linux.die.net/man/7/signal


killall프로세스 이름을 사용하여 프로세스 를 종료한다는 의미 입니까? 그리고이 목적으로 pgrep을 사용합니까? 그리고 killall또한, 모든 자식 프로세스를 죽인다? killall기본적으로 어떤 신호가 사용됩니까?
Ijaz Ahmad Khan

3
... 당신이 경우가있는 솔라리스에 아니라면 killall죽일 모든 당신이있는 거 루트 경우, 당신은 효과적으로 서버를 재부팅하고 그래서, 당신은 죽일 권리가 프로세스를.
Jenny D

1
yep : killall chromium크롬 프로세스 pgrep chromium를 종료하고 PID 목록을 제공하며 pkill chromium크롬을 종료합니다. killall는은 (pkill에로) 기본 SIGTERM 신호에 의해 보내드립니다
dervishe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.