प्रक्रिया को लॉन्च करने के बजाय आप निष्पादन कार्य (आपके मामले में सेलेनियम सर्वर) से मारना चाहते हैं। एक स्क्रिप्ट लॉन्च करने के लिए निष्पादन कार्य का उपयोग करें (मैंने बैश का उपयोग किया लेकिन रूबी, पायथन इत्यादि भी काम करेंगे)। यह स्क्रिप्ट वांछित कार्य शुरू करेगी और पिड गूंज जाएगी। आवश्यक पथ और निष्पादन योग्य को नीचे बदलें जो आप नीचे चलाना चाहते हैं।
#!bin/bash
./path_to_executable/process_to_run &
echo $!
नोट "&" इस प्रक्रिया को पृष्ठभूमि के लिए भेजता है और अपनी परियोजना के निर्माण जारी रखने के लिए Phing अनुमति देता है। अंतिम पंक्ति उस पिड को आउटपुट करती है जिसे तब कैप्चर किया जा सकता है और फ़िंग निष्पादन कार्य द्वारा फ़ाइल में सहेजा जा सकता है। इस को बचाने के लिए पीआईडी Phing कार्यकारी कार्य करने के लिए उत्पादन विकल्प जोड़ने:
<exec command="your_script" spawn="true" output="./pid.txt" />
उत्पादन विकल्प वर्तमान निर्देशिका में एक pid.txt फाइल करने के लिए कार्यकारी कार्य के उत्पादन में बचत होगी। ध्यान दें कि इसे बाद में पढ़ने के लिए सक्षम करने के लिए आपको इस फ़ाइल को चिह्नित करने की आवश्यकता हो सकती है (उपयोगकर्ता को फ़िंग चल रहा है)।
एक अलग कार्य में, आप फ़ाइल से पीआईडी को पढ़ने और फिर प्रक्रिया को मारने के लिए एक कार्यकारी कार्य का उपयोग कर सकते हैं।
<loadfile property="pid" file="./pid.txt" />
<exec command="kill ${pid}" dir="./" />
नोट: में आप ऊपर मार आदेश को sudo पहले जोड़ें करना पड़ सकता है (जो प्रक्रिया का मालिक है पर निर्भर करता है, और यह कैसे शुरू किया गया था
वैकल्पिक लेकिन विचार दूर करने के लिए एक कार्य जोड़ने के लायक। pid.txt फ़ाइल। यह गलत प्रक्रिया को मारने की किसी भी संभावना को रोक देगा (एक स्टेल पिड के आधार पर)। आप किसी भी त्रुटि के मामले में pid.txt फ़ाइल की सामग्री की जांच भी कर सकते हैं क्योंकि इसमें कुछ हो सकता है पिड के अलावा
हालांकि यह सबसे प्रत्यक्ष या इष्टतम समाधान नहीं हो सकता है, यह काम करता है।
स्रोत
2013-06-29 20:46:40
आप कभी भी इस के लिए एक समाधान मिला? परीक्षण के बाद भी मैं सेलेनियम सर्वर को मारना चाहता हूं। – papaiatis