질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

쉘스크립트 설명좀 부탁드립니다.

작성자 정보

  • 김재명 작성
  • 작성일

컨텐츠 정보

본문

3.  간단한 예제

특정 프로세의 수를 세어   10개 이상이면 콘솔상에 특정 문자를 출력하는

것에 대해서 알아보자 

-------------------------------------------------------------------------------
#!/bin/bash

process_name="httpd"

process_max_cnt="10"

process_cnt="`ps -ef  | grep $process_name | grep -v "grep" | wc -l`"


if [ "$process_cnt" -gt "$process_max_cnt" ] ; then
    echo " $process_name : $process_cnt "
fi
-------------------------------------------------------------------------------

위와같이 작성이 된다면  httpd라는 프로세서의 갯수가 10개 초과이라면 

해당 스크립트를 실행시킬시에  "httpd : 11" 과 같은 형식으로 출력이 된다 .






위의 예제에서 process_cnt="`ps -ef  | grep $process_name | grep -v "grep" | wc -l`"를 잘 풀어서 설명해주시분 안계신가요?

파이프가 여러개가 들어가 있으니까 너무 어렵네요

기본적인것도 모르는 초보에게 설명을 부탁드립니다.

관련자료

댓글 3

아카샤님의 댓글

  • 아카샤
  • 작성일
해당 문장은 쉘스크립트 문제라기 보다...
ps -ef  | grep $process_name | grep -v "grep" | wc -l

이부분을 이해하시면 될것 같은데....

공부하시는 거라면.... ps,grep,wc 명령어와 옵션에 대해 알아보시면 금방 이해가 되실 것 같네요^^

박신주님의 댓글

  • 박신주
  • 작성일
파이프의 역할이 무엇인지는 아시죠? " | " 앞의 결과를 " | " 뒤의 입력으로 받아들이는거..
차례대로 풀어나가면 됩니다.

실행순서는

ps -ef : 현재 실행중인 프로세스 정보들을 출력합니다.

ps -ef  | grep $process_name : 현재 실행중인 프로세스 정보들을 출력하여 $process_name 문구를 포함하는 줄을 찾아서 출력합니다.

ps -ef  | grep $process_name | grep -v "grep" : 현재 실행중인 프로세스 중에 $process_name 문구를 포함하는 줄을 찾고 grep 이라는 단어가 들어가는 줄은 제외시키고 출력합니다.

ps -ef  | grep $process_name | grep -v "grep" | wc -l : 현재 실행중인 프로세스 중에 $process_name 문구를 포함하는 줄을 찾고 grep 이라는 단어가 들어가는 줄은 제외시키고 남은 줄 수를 출력합니다.

이해되시나요?

김재명님의 댓글

  • 김재명
  • 작성일
고맙습니다. 큰 도움이 되었습니다. 친절한 설명 감사합니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  74 명