다음 명령으로 생성된 모든 프로세스를 종료하고 싶습니다.

다음 명령으로 생성된 모든 프로세스를 종료하고 싶습니다.

다음 명령은 실행 중인 모든 PID를 표시합니다 vmstat1.

ps -ef | grep "vmstat 1" | awk '{ print $2 }'

내 질문은 동시에 20명의 사람들이 있다면 어떻게 그들을 죽일 수 있느냐는 것입니다.

답변1

명령이 PID 목록을 생성하는 경우 파이프로 연결하면 됩니다.

xargs kill

귀하의 명령은 grep 명령과도 일치하므로 |grep -v grep원래 명령 grep앞에 이와 같은 것을 추가하는 것을 고려하십시오.

답변2

표준 명령 은 pkill아니지만 많은 Unices에서 발견되며 이러한 유형의 작업에 특별히 사용됩니다.

pkill -f 'vmstat 1'

또한 귀하 grep의 의지는 및 (위의 경우와 마찬가지로 ) 및 의 상위 집합과 vmstat 1도 일치 합니다 . 더욱 강력해지려면 다음과 같이 하세요.vmstat 10grep vmstat 1pkillawkgrep

ps -Ao pid,args | awk '$2 == "vmstat" && $3 == "1" {print $1}' | xargs kill

또는

pkill -xf 'vmstat 1'

답변3

이미 awk를 사용하고 있다면 다음을 수행할 수 있습니다.

ps -ef | grep "vmstat 1" | awk '!/grep/{ print "kill " $2 }' | bash

종료할 명령 목록을 출력하고, 각 명령이 프로세스를 종료하므로 잠재적인 인수 목록이 너무 길어지는 일이 없습니다(프로세스를 실행할 때는 그럴 가능성이 낮지만). 일치를 방지하기 위한 패턴을 추가했습니다. grep 프로세스 자체를 종료하면 목록이 단축될 수 있습니다.

답변4

매우 간단합니다:

$ kill -9 $(pgrep -f vmstat)

관련 정보