जवाबों:
अपना स्वयं का बैश फ़ंक्शन बनाएं और इसे अपने में रखें ~/.bashrc
:
check_upstart_service(){
status $1 | grep -q "^$1 start" > /dev/null
return $?
}
मैं वास्तव में पार्सिंग आउटपुट के तरीके को नापसंद करता हूं, लेकिन मुझे एक और स्पष्ट तरीका नहीं दिखता है। और इस मामले में इसका उत्पादन <service name> start
बहुत विश्वसनीय है क्योंकि यह अपस्टार्ट प्रलेखन में निर्दिष्ट है ।
अब आप इसे इस तरह से उपयोग कर सकते हैं:
if check_upstart_service ssh; then echo "running"; else echo "stopped"; fi
स्ट्रिंग के आधार पर बैश में शामिल हैं :
job='your_job_name'
job_status=$(status ${job})
if [[ ${job_status} == *running* ]]
then
# do whatever you need
else
# do whatever you need
fi
मेरा पहला आवेग कोड इमेजिनरी रोबॉट्स की भिन्नता का उपयोग करना था
job='your_job_name'
dbus-send --system --print-reply --dest=com.ubuntu.Upstart \
/com/ubuntu/Upstart/jobs/${job}/_ \
org.freedesktop.DBus.Properties.Get string:'' string:state
जो कुछ इस तरह लौटेगा
विधि वापसी प्रेषक =: 1.0 -> भाग्य =: 1.94 उत्तर_सरियल = 2 संस्करण स्ट्रिंग "चल रहा है"
और ऊपर दिए गए समाधान का उपयोग यह जांचने के लिए करें कि क्या दिए गए स्ट्रिंग में "रनिंग" है। हालाँकि मामला यह है कि नौकरी नहीं चल रही है, डब कॉल कॉल स्टेटस 1 से बाहर निकल जाएगी, बजाय "प्रतीक्षा" के जैसे मैं उम्मीद कर रहा था।
status ${job}
स्थिति 1 को छोड़कर कभी भी बाहर नहीं निकलेंगे, जब ऐसी कोई नौकरी नहीं होगी।
आप उस विशिष्ट सेवा की स्थिति को क्वेरी करने के लिए DBUS का उपयोग करेंगे।
$ job=myjob
$ dbus-send --system --print-reply --dest=com.ubuntu.Upstart /com/ubuntu/Upstart/jobs/${job}/_ org.freedesktop.DBus.Properties.GetAll string:''
http://upstart.ubuntu.com/cookbook/#get-status-of-job-via-d-bus
ध्यान दें कि यदि आप अपनी खुद की अपस्टार्ट नौकरी लिख रहे हैं, तो आपको इसके बजाय अपस्टार्ट इवेंट या पैकेज निर्भरता का उपयोग करना चाहिए।
ऐसा लगता है कि अपस्टार्ट स्टेटस कमांड लिनक्स स्टैंडर्ड बेस प्रोजेक्ट से इनिट स्क्रिप्ट विनिर्देश के अनुरूप है, जिसका अर्थ है कि आप 0 के एक्जिट कोड को मान सकते हैं कि प्रोग्राम चल रहा है, 1-3 के एग्जिट कोड का मतलब है कि यह चल रहा है, और कोई भी अन्य निकास कोड का अर्थ अपरिभाषित स्थिति है।
देखें: http://refspecs.linuxbase.org/LSB_3.0.0/LSB-PDA/LSB-PDA/iniscrptact.html
status $1 2> /dev/null | grep -q "^$1 start" > /dev/null 2> /dev/null
यह सुनिश्चित करना चाहते हैं कि यह चुप हो जाए।