मेरे पास एक सिस्टम स्क्रिप्ट है जो "ps aux | grep utilities" के परिणामों को टेक्स्टफाइल पर चलाती है और पाइप करती है ताकि टेक्स्टफाइल को दिखाया जा सके ताकि वेब सेवा फ़ाइल को पढ़ सके और परिणाम मेरे वेब ऐप में प्रदर्शित कर सके।PHP grep ... परिणाम
यहाँ कच्चे परिणाम का एक उदाहरण है:
user 12052 0.2 0.1 137184 13056 ? Ss 10:00 0:00 php /home/user/public_html/utilities/runProcFile.php cust1 cron
user 12054 0.2 0.1 137184 13064 ? Ss 10:00 0:00 php /home/user/public_html/utilities/runProcFile.php cust3 cron
user 12055 0.6 0.1 137844 14220 ? Ss 10:00 0:00 php /home/user/public_html/utilities/runProcFile.php cust4 cron
user 12057 0.2 0.1 137184 13052 ? Ss 10:00 0:00 php /home/user/public_html/utilities/runProcFile.php cust89 cron
user 12058 0.2 0.1 137184 13052 ? Ss 10:00 0:00 php /home/user/public_html/utilities/runProcFile.php cust435 cron
user 12059 0.3 0.1 135112 13000 ? Ss 10:00 0:00 php /home/user/public_html/utilities/runProcFile.php cust16 cron
root 12068 0.0 0.0 106088 1164 pts/1 S+ 10:00 0:00 sh -c ps aux | grep utilities > /home/user/public_html/logs/dashboard/currentlyPosting.txt
root 12070 0.0 0.0 103240 828 pts/1 R+ 10:00 0:00 grep utilities
मेरी php स्क्रिप्ट इस textfile पार्स करता है के रूप में, मैं केवल निम्नलिखित (सिर्फ एक उदाहरण) को निकालने के लिए की जरूरत है:
cust1
cust3
cust4
cust89
cust435
cust16
मेरे पास है कई अलग-अलग तरीके से कोशिश की और कुछ भी अच्छी तरह से काम नहीं कर रहा है। जिस तरह से मैंने नीचे सूचीबद्ध किया है, लेकिन कभी-कभी कचरा भी पकड़ता है क्योंकि परिवर्तनों पर विस्फोट करने के लिए एक पंक्ति में "रिक्त स्थान" की संख्या।
public function showProcesses() {
$lines = file(DIR_LOGGER_ROOT . "dashboard/currentlyPosting.txt");
$results = array();
$i = 0;
foreach($lines as $line) {
if (preg_match("/php/i", $line)) {
$userProcess = explode(" ", $line);
if($userProcess[29] != "0:00" && strlen($userProcess[29]) < 20) {
$results[$i] = $userProcess[29];
$i++;
}
}
}
return $results;
}
क्या आप में से कुछ इस के लिए सुरुचिपूर्ण समाधान पोस्ट कर सकते हैं? मैं चीजों को करने के बेहतर तरीके सीखने की कोशिश कर रहा हूं और मार्गदर्शन की सराहना करता हूं।
यदि आप ऐसा करना एक कमांड लाइन अनुप्रयोग लिख रहे हैं, मैं बेहतर स्ट्रिंग से निपटने और पर्ल की तरह regexes के लिए अनुकूल एक भाषा उपयोग करने का सुझाव:
तो फिर तुम साथ अंत से पहले आइटम प्राप्त कर सकते हैं। आप सीधे प्रक्रिया तालिका तक पहुंचने के लिए सीपीएएन पर कुछ भी ढूंढ सकते हैं, जैसे कि http://search.cpan.org/dist/Proc-ProcessTable/ –
डेटा इकट्ठा किया जाता है और सिस्टम स्क्रिप्ट से टेक्स्टफाइल पर लिखा जाता है। यह मेरे वेब ऐप से निष्पादन और रूट का उपयोग किए बिना टेक्स्टफाइल को मेरे वेब ऐप तक पहुंच योग्य बनाता है। लेकिन परिणामों को पार्स करना वेब ऐप के लिए है इसलिए php समझ में आता है। –