프로세스에서 grep을 프로세스 자체로 사용할 때 명령을 무시합니다.

프로세스에서 grep을 프로세스 자체로 사용할 때 명령을 무시합니다.

특정 응용 프로그램이 실행 중인지 확인하기 위해 bash 스크립트를 작성 중입니다. 죽으면 다시 시작하겠습니다.

내 초기 생각은 프로세스에 pid(이 경우 Java 프로세스 Thread)가 있는지 확인하는 것이었습니다.

ps aux | grep org.apache.flume.node.Application
root     15881  5.1  1.1 3286884 93996 pts/3   Sl   00:25   0:26 /usr/lib/jvm/java-1.8.0-ibm-1.8.0.3.20-1jpp.1.el7_2.x86_64/jre/bin/java -Xms100m -Xmx500m -Dcom.sun.management.jmxremote? -Dflume.monitoring.type=http -Dflume.monitoring.port=34545 -cp /prayagupd/opt/flume/conf:/prayagupd/opt/flume/lib/*:/lib/* -Djava.library.path= org.apache.flume.node.Application -f /prayagupd/opt/flume/conf/flume.conf -n client
root     18716  0.0  0.0 112780   976 pts/3    R+   00:34   0:00 grep --color=auto org.apache.flume.node.Application

내 논리에 따라 주어진 이름 에 대한 프로세스 ID가 있는지 확인 ps aux하고 .grepprocesses

ps aux | grep org.apache.flume.node.Application | awk '{print $2}'
15881
22878

확인할 수 있어요

if(I find 2 processIds) then 
      count it as running process(as shown in below command)
otherwise 
      re-start it again.

예를 들어.

ps aux | grep org.apache.flume.node.Application | awk '{print '$2'}' | wc -l
2

그러나 특정 프로세스가 실행 중인지 확인하는 더 좋은 방법이 있다고 생각합니다.

답변1

이것은 카운트를 줄 것입니다

ps aux | grep -c "[o]rg.apache.flume.node.Application"

관련 정보