特定のアプリケーションが実行されていることを確認するために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
。grep
processes
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"