강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

쉘프로그래밍강좌103: 특정 프로세스 모두 한번에 죽이기 : 제작명령어 prokill

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

쉘프로그래밍강좌103: 특정 프로세스 모두 한번에 죽이기 : 제작명령어 prokill

 

 

 

 

prokill은 서버관리자들에게 이런 방법으로도 리눅스 명령어를 만들어 사용할 수 있구나.”라는 것을 느끼게 하기 위하여 간단하지만 매우 유용한 명령어를 쉘프로그램으로 제작해 본 것입니다.

 

 

 

  , 이번에 설명 드리는 prokill의 설명을 보신다면 아마도 이와 같은 방법을 다른 명령어에 적용해 보아야겠다.

 

 

 

라는 생각을 하실 것입니다.

 

 

 

  이것이 필자가 의도하는   이번 강좌의 목적입니다.

 

 

 

 

 

사용형식   : prokill 프로세스명

 

 

 

, prokill명령어는 특정 프로세스의 과부하로 인하여 서비스가 이루어지지 않거나 설정변경과 같은 시스템적용 등을 위하여 프로세스를 재시작하기 위해 특정 프로세스를 모두 죽이기 위한 목적으로 사용하는 명령어입니다.

 

 

 

  prokill명령어는 간단한 쉘로 제작한 명령어이며 prokill을 사용하기 위해서는 다음과 같은 설정을 해주셔야 합니다.

 

 

 

 

 

이 명령어는 기존의 리눅스 명령어를 간단히 응용한 쉘프로그램으로서 필자가 직접 만든 것입니다.

 

 

 

  또한 이 명령어 대신에 killall이라는 리눅스 명령어를 사용하셔도 됩니다.

 

 

 

  실제로 실무에서는 이런 류의 명령어를 필요에 의해 서버관리자가 직접 만들어 사용하는 경우는 매우 흔한 일입니다.

 

 

 

 

 

아래는 prokill이라는 명령어를 제작하는 방법입니다.

 

 

 

 , prokill이라는 간단한 쉘프로그램을 만든다고 생각하시면 됩니다.

 

 

 

 

 

prokill 명령어 만들기

       1. root권한으로 작업한다.

 

 

 

 

       2. "vi prokill"을 실행하여 vi모드를 실행한다.

 

 

 

 

       3. 다음과 같은 내용을 입력한다.

 

 

 

 

 

             #!/bin/bash

             # 사용법 : prokill 프로세스명

             # 사용예 #1 : prokill httpd

             # 사용예 #2 : prokill sendmail

             ps -ef | grep $1 | awk '{print $2}' | xargs kill -9 {}

 

 

 

 

       4. 저장하고 빠져 나온다.

 

 

 

 

       5. "chmod 755 prokill"로 실행퍼미션을 설정한다.

 

 

 

 

       6. "mv prokill /sbin"으로 root의 패스가 적용되는 디렉토리로 옮긴다.

 

 

 

 

       7. "which prokill" /sbin/prokill이 나오는가를 확인한다.

 

 

 

 

 

 

 

 

위와 같이 만든 prokill명령어가 실행되는 단계를 간략하게 설명 드리면 다음과 같습니다.

 

 

 

 

 

ps -ef | grep 프로세스명

 

지정된 프로세스들의 정보를 모두 출력합니다.

 

 

 

 

 

awk '{print $2}'

 

ps의 결과들 중 프로세스의 PID부분들만을 모두 뽑아 옵니다.

 

 

 

 

 

xargs kill -9

 

뽑아온 PID에 대하여 "kill -9 PID"를 차례대로 실행하여 해당 PID의 프로세스를 모두 죽입니다.

 

 

 

 쉽게 말씀 드린다면 위의 명령어는 특정 프로세스의 PID를 모두 차례대로 "kill -9 PID"를 실행하는 것에 불과 합니다.

 

 

 

 

 

따라서  prokill "ps -ef | grep 프로세스명 | awk '{print $2}' | xargs kill -9 {}"라는 긴 명령어를 단축하여 사용하기 위한 것입니다.

 

 

 

 

 

이 명령어를 만들지 않더라도 위의 긴 명령어를 사용하시는 것도 괜찮은 방법입니다.

 

 

 

 

 

또한 리눅스에서 제공하는 "/usr/bin/killall"명령어를 사용하셔도 됩니다.

 

 

 

 

필자가 굳이 prokill이라는 명령어를 직접 만들어서 설명하는 이유는 prokill뿐 아니라 다른 명령어들도 이와 같이 응용하여 만들 수 있다는 좋은 활용의 보기가 되기 때문입니다.

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  90 명