나는 kill
명령에 대해 잘 알고 있으며 , 대부분 강제로 프로세스를 강제 종료하기 위해 kill -9를 사용하는데 사용할 수있는 다른 많은 신호가있다 kill
. 그러나 kill 명령이 이미 있다면 pkill
and 의 사용 사례가 무엇인지 궁금합니다 killall
.
수행 pkill
및 killall
사용 kill
구현에 명령을? 나는 그것들이 단지 랩퍼 kill
이거나 자신의 구현을 가지고 있다는 것을 의미 합니까?
또한 pgrep
명령이 프로세스 이름에서 프로세스 ID를 얻는 방법을 알고 싶습니다 .
이 모든 명령이 동일한 기본 시스템 호출을 사용합니까? 성능 관점에서 어떤 것이 더 빠릅니까?
답변
이 kill
명령은 kill
시스템 호출에 대한 매우 간단한 래퍼 이며 프로세스 ID (PID)에 대해서만 알고 있습니다. pkill
그리고 killall
또한에 래퍼 kill
시스템 호출 , (실제로, 직접 시스템 호출을 호출하는 libc의 라이브러리),하지만 등 프로세스 이름, 프로세스의 소유자, 세션 ID, 등을 기준으로 당신을위한 PID를을 확인할 수 있습니다
사용 하거나 작업 하는 방법 pkill
과 killall
작업을 볼 수 있습니다 . Linux에서는 파일 시스템을 통해 읽고 , 찾은 각 pid (디렉토리)에 대해 프로세스 이름 또는 기타 속성으로 프로세스를 식별하는 방식으로 경로를 탐색합니다. 이 작업은 기술적으로, 커널 및 시스템에 따라 다릅니다. 일반적으로 명령 이름이 두 번째 필드로 포함되어 있습니다. 들어 와은 조사 각 PID의 PROC 항목에 대한 항목을.ltrace
strace
/proc
/proc/<PID>/stat
pkill -f
pgrep
/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