2012-01-06 12 views
9

मेरे पास एक स्क्रिप्ट है कि मैं "jboss नहीं चल रहा" या "jboss चल रहा है" को प्रतिबिंबित करना चाहता हूं, इस पर निर्भर करता है कि यह प्रक्रिया सूची में jboss प्रक्रिया को पा सकता है या नहीं। हालांकि, जब मैंने जब्स को बंद कर दिया तो यह अभी भी अन्य स्थिति को निष्पादित करता है और कहता है "jboss चल रहा है"। यदि मैं मैन्युअल रूप से "pgrep -f jboss" करता हूं तो यह कुछ भी वापस नहीं करता है, तो यह अभी भी अन्य स्थिति में क्यों जा रहा है? यूनिक्स सर्वर पर जेबॉस चल रहा है या नहीं जांचें?

#!/bin/bash 
if [ -z "$(pgrep -f jboss)" ] 
    then 
    echo "jboss is not running" 
else 
    echo "jboss is running" 
fi 

धन्यवाद हैरान आपकी मदद के लिए!

उत्तर

0

भागो JPS, ग्रेप यह आप के साथ लाइन के लिए, JBoss पीआईडी ​​ कटौती लाइन से और पीआईडी ​​की जाँच करें। -

3

कमान की exit status का उपयोग करके देखें

#!/bin/bash 

pgrep -f jboss &> /dev/null 
if [ $? -eq 0 ] 
    then 
    echo "jboss is running" 
else 
    echo "jboss is not running" 
fi 
12
इसके बजाय उत्पादन की जाँच की

, बस आदेश का उपयोग करें:

if pgrep -f jboss >/dev/null 
    then 
    echo "jboss is running" 
else 
    echo "jboss is not running" 
fi 
-2

आप है कि रास्ते में jboss जाँच नहीं कर सकते। क्योंकि जेबॉस ने कभी-कभी 1-2 मिनट की तरह लॉग इन करना शुरू किया था। तो आपकी स्क्रिप्ट केवल जेबॉस को दिखाती है, न कि "जेबॉस वास्तव में यूपी है" (मेरा मतलब है जेबॉस पर आवेदन)।

+0

आप अपने सवाल का जवाब नहीं है इस्तेमाल कर सकते हैं तैनात किया जाता है, तो है, आपने अभी समझाया कि उसकी जांच जेबॉस की निगरानी के लिए पर्याप्त क्यों नहीं है। – itsbruce

1
#! /bin/bash 
if [ -z "$(ps -ef | grep org.jboss.Main)" ] 
then 
echo "jboss is not running" 
else 
    echo "jboss is running" 
fi 
1

यह सबसे अच्छा तरीका है:

if [ -z "$(ps -ef | grep java | grep jboss)" ] 
then 
echo "JBoss is NOT running" 
else 
    echo "JBoss is running" 
fi 
2

प्रक्रिया जाओ आईडी JBoss 7/ईएपी 6:

pgrep -f org.jboss.as 

तो अगर आप के साथ पूर्व उदाहरण स्क्रिप्ट को बढ़ाने के लिए चाहते हैं यह:

if [ -z "$(pgrep -f org.jboss.as)" ] 
then 
echo "JBoss is NOT running" 
else 
    echo "JBoss is running" 
fi 
0

सबसे अच्छा तरीका यह

result=`$jboss/bin/jboss-cli.sh --connect controller=localhost:$controller_port --commands=\"read-attribute server-state\" > out 2&1` 
echo "$result" | grep -q "running" 
if [ $? -eq 0 ];then 
    echo "Jboss running" 
fi 

का उपयोग आप जाँच करना चाहते हैं कान या युद्ध फ़ाइल तो आप निम्न आदेश

$JBOSS_HOME/bin/jboss\-cli.sh --connect controller=localhost:$PORT --command="deployment-info --name=$YOUR_WAR_OR_EAR_FILE"