2014-06-25 6 views
13

में सेवा मौजूद है या नहीं, यह जांचने के लिए bash में सबसे अच्छा तरीका क्या है? यह रेड हैट (सेंटोस) और उबंटू दोनों में काम करना चाहिए?जांचें कि बैश (सेंटोस और उबंटू)

सोच:

service="mysqld" 
if [ -f "/etc/init.d/$service" ]; then 
    # mysqld service exists 
fi 

भी service आदेश का उपयोग करें और बदले कोड की जांच कर सके।

service mysqld status 
if [ $? = 0 ]; then 
    # mysqld service exists 
fi 

सबसे अच्छा समाधान क्या है?

+0

उपयोगकर्ता '' अपनी उपस्थिति की जांच करने के chkconfig। वापसी मूल्य 0 है यदि यह मौजूद है और 1 यदि नहीं है। 'सेवा स्थिति 'सेवा की स्थिति लौटाती है। – alvits

+0

'chkconfig 'केवल मौजूदा रिटर्नवेल में चलाने के लिए कॉन्फ़िगर किया गया है (केवल मेरे द्वारा यहां दिए गए मैन पेज के अनुसार) केवल सत्य लौटाता है। हालांकि chkconfig --list' में वांछित व्यवहार होता है हालांकि (सफलता और विफलता आउटपुट की लागत पर) लेकिन इनिट स्क्रिप्ट के अस्तित्व (और निष्पादन योग्यता) के अस्तित्व की जांच करने से बेहतर हो सकता है या नहीं। –

उत्तर

-1

इसे आजमाएं, ps कमांड का उपयोग उबंटू & आरएचईएल दोनों में किया जा सकता है, यह दोनों प्लेटफार्मों में काम होना चाहिए।

#!/bin/bash 
ps cax | grep mysqld > /dev/null 
if [ $? -eq 0 ]; then 
    echo "mysqld service exists" 
else 
    echo "mysqld service not exists" 
fi 
+0

यह मानता है कि यह चल रहा है। मैं यह जांचना नहीं चाहता कि सेवा चल रही है या नहीं, मैं देखना चाहता हूं कि सेवा स्थापित है या नहीं। – Justin

+3

शायद यह एक मदद 'सेवा - स्टेटस-सब | grep mysql' इस तरह से आप जांच सकते हैं कि सेवा स्थापित है या नहीं, अगर स्थापित है तो यह आपको परिणाम देता है, अगर संबंधित सेवा के लिए कोई परिणाम न हो। – Rustam

8

रुस्तम Mamat इस बात के लिए श्रेय दिया जाता है:

आप अपने सभी सेवाओं की सूची है, तो आप क्या वहाँ में है देखने के लिए परिणाम grep कर सकते हैं। उदाहरण के लिए:

# Restart apache2 service, if it exists.  
if service --status-all | grep -Fq 'apache2'; then  
    sudo service apache2 restart  
fi 
+3

"सेवा - स्टेटस-सब" अज्ञात राज्य पर stderr पर सेवाएं लिखता है। यह 'सेवा - स्टेटस-सब 2> और 1 | का उपयोग करना सुविधाजनक हो सकता है grep -Fq 'apache2'' –

2

जोएल बी के जवाब के बंद का निर्माण करने के लिए, यहाँ यह एक समारोह (में अतिरिक्त लचीलेपन का एक सा के साथ के रूप में है पैरामीटर नोट की जाँच का पूर्ण अभाव है, यह अगर तुम में उत्तीर्ण नहीं टूट जाएगा। 2 पैरामीटर):

#!/bin/sh 

serviceCommand() { 
    if sudo service --status-all | grep -Fq ${1}; then 
    sudo service ${1} ${2} 
    fi 
} 

serviceCommand apache2 status 
+0

पता नहीं क्यों लेकिन कुछ सेवा की स्थिति जैसे सीम std_err पर मुद्रित हैं इसलिए मुझे पाइप से पहले 2> & 1 जोड़ना पड़ा –

1
#!/bin/sh 

service=mysql 
status=$(/etc/init.d/mysql status) 
print "$status" 
#echo $status > /var/log/mysql_status_log 
संबंधित मुद्दे