2012-12-01 33 views
10

मुझे स्क्रिप्ट में उपयोग के लिए पर्यवेक्षक का उपयोग करके बनाई गई प्रक्रियाओं की प्रक्रिया आईडी की आवश्यकता है। पर्यवेक्षकों द्वारा उत्पन्न प्रक्रियाएं अपनी डिफ़ॉल्ट निर्देशिकाओं में .pid फ़ाइलों को नहीं बनाती हैं, अगर बिल्कुल भी।पर्यवेक्षक द्वारा बनाई गई प्रक्रियाओं की आईडी प्राप्त करने के लिए वैसे भी?

मैं पर्यवेक्षक बाल प्रक्रिया की प्रक्रिया आईडी कैसे प्राप्त करूं?

उत्तर

9

प्रबंधित प्रक्रियाओं के pid एस सूचीबद्ध करने के लिए supervisorctl status का उपयोग करें।

एक छोटे से awk, sed और paste मालिश के साथ, आप उन pid रों निकालने अन्य आदेश के इनपुट के रूप में स्वीकार किए जाने की कर सकते हैं:

echo `bin/supervisorctl status | grep RUNNING | awk -F' ' '{print $4}' | sed -e 's/,$//' | paste -sd' '` 

एक अंतरिक्ष अलग की गई सूची के रूप में कार्यक्रमों को चलाने के सभी पीआईडी ​​की सूची होगी। उदाहरण के लिए, सिग्नल भेजने के लिए kill -HUP कमांड के साथ echo को बदलें।

+0

चियर्स Martijn। अप्रासंगिक अब आपके पहले के उत्तर के लिए धन्यवाद :) फिर भी समूह कमांड नहीं मिल सकता है और फिर भी काम शुरू कर सकता है। – user1561108

+0

आश्चर्य की बात है कि ऐसा करने का कोई सीधा तरीका नहीं है। लेकिन यह एक आकर्षण की तरह काम करता है – JRun

7

अब आप निम्न कर सकते हैं:

sudo supervisorctl pid all 
sudo supervisorctl pid myprogramname