kill, pkill 및 killall의 차이점은 무엇입니까 무엇인지 궁금합니다 killall. 수행 pkill및

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

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

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

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



답변

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하지 않습니다. 성능 차이가 있는지 말할 수 없었습니다. 스스로 벤치마킹해야합니다.


답변

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