strace -p $(netstat -tnp|awk -F'[ /]+' "/:$(netstat -tnp|awk -F'[ :]+'
"/\/telnet/{print \$5}") /&&/apache2/{print \$7}")
या, आसान पढ़ने के लिए स्वरूपित, और ओपी के स्ट्रेस झंडे के साथ बरकरार:
sudo strace -o /tmp/strace -f -s4096 -r -p $(netstat -tnp | \
awk -F'[ /]+' "/:$(netstat -tnp | awk -F'[ :]+' "/\/telnet/ \
{print \$5}") / && /apache2/ {print \$7}")
ब्रेकडाउन, सबसे पहले:
netstat -tnp | awk -F'[ :]+' "/\/telnet/ {print \$5}"
मुझे दिखाएँ, DNS नामों के आईपी पते को हल किए बिना, सभी सक्रिय टीसीपी कनेक्शन। पाइप को जागृत करने के लिए, जो समाप्त होने वाली किसी भी रेखा पर पांचवें क्षेत्र को प्रिंट करता है /telnet
, जहां खेतों को एक या अधिक रिक्त स्थान और कॉलोन द्वारा अलग किया जाता है। यह फ़ील्ड स्रोत पोर्ट होगा।
सुधार करने के लिए : awk | head -n 1
के अंत या ;exit
एक्शन हिस्से के अंदर एक जोड़कर बहुत अधिक मजबूत बनाया जा सकता है , लेकिन आपके मूल संस्करण में एक समतुल्य कमी थी, इसलिए मैं इसे लंबे समय तक नहीं बनाना चाहता था।
netstat -tnp | awk -F'[ /]+' "/:**** / && /apache2/ {print \$7}")
****
यहाँ भाग मैं पहले से ही ऊपर समझाया है, है। यहां, मैं किसी भी लाइन की तलाश कर रहा हूं netstat -tnp
जिसमें समान पोर्ट है जैसा कि मैंने ऊपर खोजा है, और अपाचे के स्वामित्व में है; जब मुझे पता चलता है, तो मैं सातवें क्षेत्र को प्रिंट करता हूं (एक या अधिक रिक्त स्थान या स्लैश द्वारा सीमांकित)। यह अपाचे बच्चे का पीआईडी है।
सुधार करने के लिए : केवल एक पीआईडी (ऊपर के समान तरीकों के माध्यम से) वापस करने के अलावा, सबसे बड़ी चीज जिसकी मैं कल्पना कर सकता हूं, वह अधिक भेदभावपूर्ण है जब यह वास्तव में कुछ और के विपरीत dport के मिलान की बात आती है कि ऐसा सिर्फ पैटर्न फिट करने के लिए होता है। यह एफएस ( -F
) के लिए कॉलोनों को जोड़कर करना आसान होता, लेकिन समस्या मिश्रित आईपीवी 4 बनाम आईपीवी 6 स्थितियों में होती है, जहां पते में कॉलोन हो सकते हैं, और जैसे कि बल्कि जल्दी से बुरा हो सकता है। यह विशेष रूप से अनुगामी स्थान के साथ बहुत ज्यादा मजबूत लग रहा था।
sudo strace -o /tmp/strace -f -s4096 -r -p
यह आपके मूल प्रश्न की एक सीधी प्रति है; मैंने इसे कम से कम में संशोधित नहीं किया।
यदि आप मुझे कुछ अतिरिक्त वर्णों की अनुमति देंगे, तो मेरे द्वारा चलाए जाने वाला संस्करण हो सकता है:
sudo strace -o /tmp/strace -f -s4096 -r -p $(netstat -tnp | \
awk -F'[ /]+' "/:$(netstat -tnp | awk -F'[ :]+' "/\/telnet/ \
{print \$5;exit}") / && /apache2/ {print \$7;exit}")