내가 일반적으로 사용하는 것은 pidof
프로세스의 pid를 가져와서 KILL -SIGTERM <pid>
죽이는 것입니다.
파이프는 한 명령의 출력을 다른 명령의 입력으로 사용한다고 가정됩니다.
그렇다면 다음 명령이 작동하지 않는 이유는 무엇입니까?
pidof firefox | kill -SIGTERM
답변1
파이프는 한 명령의 출력을 다른 명령의 입력으로 사용한다고 가정됩니다.
이는 정확하지만 kill
표준 입력의 어떤 입력도 허용하지 않습니다. 대신 명령줄 인수로 제공해야 합니다.
kill -SIGTERM "$(pidof firefox)"
또는:
pidof firefox | xargs kill
$(
이는 쉘 내부의 명령 확장 xargs
이지만 외부입니다.
그러나 이러한 방법에는 pid가 여러 개 있거나 pid가 없는 경우 수행할 작업과 같은 극단적인 경우가 많습니다. 이것이 pkill이 존재하는 이유입니다.
pkill -TERM firefox
답변2
실행하는 것이 더 좋습니다:
kill $(pidof firefox)
또는
pkill firefox
답변3
다양성을 위해: 달리는 것은 어떻습니까:
kill -SIGTERM "$(pgrep -f firefox)"
대소 문자를 구분하지 않는지 확실하지 않습니다.
kill -SIGTERM "$(pgrep -fi FirEfox)"
여러 프로세스가 동일한 이름으로 실행 중이고 첫 번째 프로세스를 종료하려고 합니다.
kill -SIGTERM "$(pgrep -f firefox | head -1)"
나에 관한 정보pgrep
$ pgrep -V
pgrep (proctools 0.4pre1) http://proctools.sourceforge.net