किसी दी गई प्रक्रिया के लिए .pid फ़ाइल को कैसे खोजें


15

मैं मोनिट की स्थापना कर रहा हूं और किसी दिए गए अजगर आवेदन की निगरानी करना चाहता हूं। Monit प्रक्रियाओं के लिए .pid फ़ाइलों को देखकर ऐसा करता है, लेकिन मुझे नहीं पता कि यह कहाँ होगा।

मैंने अपनी सरल निष्पादन योग्य बनाने और इसे चलाने की भी कोशिश की- यहाँ भी मैं यह पता नहीं लगा सकता हूँ कि .pid फ़ाइल कहाँ बनाई जाती है।

और क्या सभी प्रक्रियाओं के पास एक .pid फ़ाइल है?


5
सभी प्रक्रियाओं में एक .pidफ़ाइल नहीं है। एप्लिकेशन (या इसकी स्टार्ट अप स्क्रिप्ट) को स्पष्ट रूप से एक बनाने की आवश्यकता है।
bahamat

जवाबों:


14

आप आमतौर /var/run/पर Redhat / CentOS- शैली सिस्टम में डीमॉनेटाइज्ड प्रक्रियाओं के लिए PID फाइलें ढूंढेंगे ।

उस की छोटी, आप हमेशा प्रक्रिया स्क्रिप्ट में देख सकते हैं। उदाहरण के लिए, SSH डेमॉन को स्क्रिप्ट के साथ शुरू किया जाता है /etc/init.d/sshd। कभी-कभी PID को वहां परिभाषित किया जाएगा (pid, PID, PIDFILE, PID_FILE, आदि के लिए खोज)।

हालांकि, आरएचईएल-स्टाइल सिस्टम पर अधिकांश अन्य डेमॉन /etc/init.d/functionsकुछ सामान्य विशेषताओं के लिए स्क्रिप्ट का स्रोत हैं ।

# Set $pid to pids from /var/run* for {program}.  $pid should be declared
# local in the caller.
# Returns LSB exit code for the 'status' action.
__pids_var_run() {
        local base=${1##*/}
        local pid_file=${2:-/var/run/$base.pid}

कुछ भी स्रोतों के लिए /etc/init.d/functions, पीआईडी ​​में रहना होगा /var/run/*.pid

कस्टम अनुप्रयोगों के लिए, पीआईडी ​​को एक आवरण स्क्रिप्ट (उम्मीद) में परिभाषित किया जाएगा। अधिकांश डेवलपर्स मुझे पता है कि ऊपर के डेमन के रूप में एक ही सम्मेलन का पालन किया जाता है।

यदि आप एक पीआईडी ​​फ़ाइल के बिना कुछ करते हैं , तो याद रखें कि मोनेट एक प्रक्रिया स्ट्रिंग पैटर पर भी निगरानी कर सकता है


1
ewwhite- बहुत बहुत धन्यवाद- लेकिन जब मैं monit procmatch anythingकमांडलाइन पर कोशिश करता हूं तो मुझे मिलता है monit: invalid argument -- procmatch। कोई विचार?
यारिन

आप किस संस्करण का उपयोग कर रहे हैं? (प्रकार monit -V) कौन सा ओएस / वितरण?
ewwhite

Monit 5.1.1 CentOS 6 पर yummed
Yarin

इसके अलावा, कई गैर-डेमॉन प्रक्रियाओं के लिए मेरे विकल्प क्या होंगे? आप इस उत्तर के
यारिन

@ यारिन ऐसा लगता है कि आपके पास ईपीईएल भंडार से मोनिट है । RPMForge से EL6 का संस्करण 5.4 है।
ewwhite

1

एक और दृष्टिकोण जो मैंने लिया:

मेरे पास एक डेटाबेस सर्वर अंतर्निहित मोड में चल रहा है, और डेटा युक्त एप्लिकेशन की निर्देशिका में हैं।

डेटाबेस में .pid फ़ाइल की तरह कुछ है, लेकिन इसे लॉक फ़ाइल कहते हैं। इस लॉक फ़ाइल का पता लगाने के लिए, मैंने ऐप द्वारा खुली सभी फाइलों को सूचीबद्ध किया:

$ ls -l /proc/18264/fd | cut -d'>' -f2

इससे मुझे एक लंबी सूची मिली जिसमें सॉकेट, पाइप, सर्वर फाइल्स आदि कुछ फिल्टर्स थे और मुझे जो चाहिए वो मुझे मिल गया:

$ ls -l /proc/18264/fd | cut -d'>' -f2 | grep /home/ | cut -b40- | sort | uniq | grep titan

/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/00000000.jdb
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.info.0
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.info.0.lck
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.lck
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.