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

5. 동종류 프로세스 한번에 죽이는 쉘명령어 직접만들기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

5. 동종류 프로세스 한번에 죽이는 쉘명령어 직접만들기

 

리눅스 명령어 중에 killall이라는 것을 아실 것입니다. , “killall httpd”라고하면 httpd프로세스들이 모두 한번에 죽게 되지요. 이와 같은 기능을 하는 명령어를 간단한 쉘프로그램으로 만들어 보도록 하겠습니다. , 동종류의 프로세스들을 한번에 모두 죽이는 작업을 쉘프로그램을 만들어서 실행해 보도록 하겠습니다여기서 만들 프로그램의 이름은 prokill이지만 이 이름은 임의대로 지정하셔도 됩니다. 단지 필자가 여기서 임의로 준 이름이 prokill이라는 것입니다. , prokill은 서버관리자들에게 이런 방법으로도 리눅스 명령어를 활용할 수 있구나.”라는 것을 느끼게 하기위하여 간단하지만 매우 유용한 명령어를 쉘프로그램으로 제작해 본 것입니다, 이번에 설명드리는 prokill의 설명을 보신다면 아마도 이와 같은 방법을 다른 명령어에 적용해 보아야겠다.”라는 생각을 하실 것입니다이것이 이번 장의 목적입니다.

 

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

 

아래는 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뿐아니라 다른 명령어들도 이와같이 응용하여 만들 수 있다는 좋은 활용의 보기가 되기 때문입니다.

 

 

prokill사용예 #1 : 아파치프로세스(httpd) 한번에 모두 죽이기

 

여러개의 프로세스들로 구성되어 있는 httpd프로세스를 모두 죽이려면 "kill -9 PID"와 같은 형태로 여러번 실행을 해주셔야 합니다물론 "killall httpd"로 해주셔도 모두 한번에 죽일 수 있습니다. 먼저 ps명령어로 httpd의 프로세스가 실행중임을 확인 하였습니다그런 다음 httpd프로세스를 모두 죽이기 위하여 "prokill httpd"를 실행 하였습니다.

 

그리고 다시 ps명령어로 httpd가 실행되고 있는가를 확인한 것입니다결과 모두 죽고 없음을 확인할 수 있습니다 

aac918f3867b2d42f8e3a6358d9d25c1_1643864392_0276.png


prokill사용예 #2 : 샌드메일프로세스(sendmail) 한번에 모두 죽이기

 

이번에는 sendmail프로세스를 모두 한번에 죽이는 예를 보겠습니다위의 httpd와 동일한 방법으로 "prokill sendmail"이라고 하시면 됩니다.  sendmail을 모두 죽인 후에 다시 ps로 실행되어있는 sendmail이 존재하는가를 확인 하였습니다.


aac918f3867b2d42f8e3a6358d9d25c1_1643864421_3796.png


“prokill sendmail”을 실행한 이후에 sendmail프로세스는 남아있지 않았습니다. 이제 여러분들의 시스템관리에 prokill을 직접만들어서 사용해 보시기 바랍니다.

 


 



관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,157 명
  • 현재 강좌수 :  36,515 개
  • 현재 접속자 :  263 명