리눅스 유닉스 여러 프로세서를 한꺼번에 종료할때 쓰는 명령어

유닉스/리눅스 계열에서 프로세서를 강제로 종료해야 할때가 있습니다. 시스템 작업을 하다보면, 특정 문자열이 들어간 프로세스를 한번에 종료해야 할 때가 있습니다.

이때, kill 명령어를 사용합니다. 여기에 -9 옵션을 붙이면 강제 종료가 됩니다. 이때 사용하는 팁입니다.

ps -ef | grep <문자열> | awk '{print $2}' | xargs kill -9

어떤 의미인지 하나씩 살펴보겠습니다.

ps -ef

먼저 ps -ef 는 현재 실행중인 프로세스를 나열합니다.

-e 옵션은 -A 옵션과 같은데, other user, every user 의 프로세스를 보여달라는 옵션입니다.

-f 옵션은 pid, uid, 시작시간, 등 더 많은 정보를 제공합니다.

ps -ef 라고 치면, 대부분의 유닉스/리눅스 계열에서는 2번째에 해당 프로세스 id 가 출력됩니다.

grep <문자열>

출력된 ps 결과에서 <문자열>이 포함된 행만 추려냅니다. 예제에서는 파이프라인 ( | )을 통해서 앞쪽 명령어의 결과를 받았습니다. 즉, 전체 프로세스 목록의 결과를 grep으로 넘겨서 grep 에서 <문자열>이 포함된 행만 결과로 나타냅니다. 그리고, 이 결과도 뒤쪽 명령어로 파이프라인을 통해 보냅니다.

awk '{print $2}'

위쪽에서 행을 추려냈으니, 이번에는 awk를 이용하여 열을 추려냅니다. grep과 awk를 적절히 이용하면, 원하는 행/열의 문자를 추출할 수 있습니다. 상기 명령어는 2번째 열의 숫자들을 모두 추려내라는 뜻입니다. awk는 출력된 값을 조작할때 사용되는데, 일반적으로 이렇게 특정 열을 추려낼때 많이 사용합니다. 2번째 열이 pid라고 했으니, pid 값만 뽑아내는 것입니다.

마지막으로

xargs kill -9

앞쪽에서 넘어온 값을 xargs 뒤에 나오는 명령어의 인자로 넘겨 주라는 뜻입니다.

그러므로, grep & awk 로 나온 값의 pid들이 kill -9 <인자들> 과 같이 전달됩니다.

결론적으로, grep <문자열> 로 필터링된 pid값에 대해서 일괄적으로 kill -9 신호를 보내는 것입니다.

ps -ef | grep <문자열> | awk '{print $2}' | xargs kill -9

위의 예제를 다시 보면서, 위쪽의 설명을 다시 보면, 이해가 될 겁니다.

Leave a Comment