2012-11-06 15 views
5

में विशेष बंदरगाह से जुड़ी प्रोसेस आईडी कैसे प्राप्त करें I SunOS पर पोर्ट 7085 के साथ संलग्न प्रक्रियाएं प्राप्त करने का प्रयास कर रहा हूं। मैंने निम्नलिखित आदेशों का प्रयास किया।सनोस

netstat -ntlp | grep 7085 कुछ भी

netstat -anop | grep 7085 भी यह एक कोशिश की वापस नहीं आए। यह स्विच SunOs

में मान्य नहीं हैं, मुझे निम्न आउटपुट मिल रहा है।

#netstat -anop

netstat: illegal option -- o

usage: netstat [-anv] [-f address_family]

netstat [-n] [-f address_family] [-P protocol] [-g | -p | -s [interval [count]]]

netstat -m [-v] [interval [count]]

netstat -i [-I interface] [-an] [-f address_family] [interval [count]]

netstat -r [-anv] [-f address_family|filter]

netstat -M [-ns] [-f address_family]

netstat -D [-I interface] [-f address_family]

SunOS के संस्करण SunOS 5.10 है। मेरा मानना ​​है कि netstat एकमात्र आदेश यह कर सकता है।

नेटस्टैट के लिए सटीक स्विच क्या है जो मुझे पोर्ट के साथ प्रक्रिया आईडी संलग्न करेगा?

+0

सनोस का कौन सा संस्करण? मैंने सोचा कि इसे दस साल से अधिक समय से सोलारिस कहा जाता है !!! –

+0

@ बेसिल। संस्करण SunOS 5.10 जेनेरिक_118833-33 sun4v sparc SUNW, Sun-Fire-T200 – LOGAN

+0

@ बेसिल .. FYI मैं इस उपयोगकर्ता को सुपर उपयोगकर्ता के रूप में चला रहा हूं ... – LOGAN

उत्तर

9
pfiles /proc/* 2>/dev/null | nawk ' 
/^[0-9]*:/ { pid=$0 } 
/port: 7085$/ { printf("%s %s\n",pid,$0);}' 
  • pfiles /proc/* पुनर्प्राप्त कर रहा है सभी प्रक्रियाओं फ़ाइल वर्णनकर्ता विवरण
  • 2>/dev/null क्षणिक प्रक्रियाओं के कारण त्रुटियों बाहर गिर रही है इस बीच
  • प्रत्येक पंक्ति शुरू में मृत्यु हो गई एक संख्या के साथ एक कोलन प्रक्रिया आईडी और विवरण की रिपोर्ट करता है, यह अजीब पिड चर
  • में संग्रहीत किया जाता है जब स्ट्रिंग port: <portnumber> (यहां 7085 है) के साथ एक पंक्ति समाप्त होती है, संबंधित पिड चर प्रदर्शित होता है।

नोट: आपको उन प्रक्रियाओं से पोर्ट जानकारी प्राप्त करने के लिए आवश्यक विशेषाधिकारों की आवश्यकता है (रूट में सभी विशेषाधिकार हैं)।

+1

मेरे लिए काम नहीं किया। आदेश कुछ सेकंड के बाद कुछ भी वापस नहीं किया था। – LOGAN

+2

स्क्रिप्ट मैं आंतरिक रूप से उपयोग कर रहा हूं यह विवरण प्राप्त करने के लिए pfiles का उपयोग कर रहा है। – LOGAN

+2

कोड सरलीकृत और निश्चित। – jlliagre

3

lsof http://linux.about.com/library/cmd/blcmdl8_lsof.htm कमांड पर एक नज़र डालें।

यह आदेश वर्णन करता है कि कौन सी प्रक्रियाएं फाइल डिस्क्रिप्टर का उपयोग कर रही हैं। याद रखें कि पोर्ट 7085 पर कुछ भी अपनी फाइल डिस्क्रिप्टर होगा जिसका उपयोग आप उस प्रक्रिया में वापस ढूंढने के लिए कर सकते हैं जो इसका उपयोग कर रहा है।

$ lsof -i :7085 

आशा है कि यह मदद कर सकते हैं:

मैं की तरह कुछ की कोशिश करेंगे।

+0

हां। मैंने कोशिश की कि दुर्भाग्य से आदेश उपलब्ध नहीं था। मैंने इस पैकेज को स्थापित किया होगा लेकिन यह उत्पादन सर्वर है और मुझे सर्वर पर कुछ भी इंस्टॉल करने का अधिकार नहीं है और 200+ से अधिक सर्वर नहीं हैं केवल 1 सर्वर हैं। मैं सौरलिस पर उपलब्ध कमांड के साथ मदद प्राप्त करने की कोशिश कर रहा हूं ... – LOGAN

+0

@LOGAN क्या आपको फ्यूसर मिला है? इसे आजमाएं: fuser -4 -v -n tcp 7085 – andrefsp

+0

यह काम नहीं कर रहा है। मुझे put.fuser का पालन करना पड़ा: अवैध विकल्प - 4 'अवैध विकल्प? उपयोग: fuser [- [k | s sig] un [c | f | d]] फ़ाइलें [- [[k | s sig] un [c | f | d]] फ़ाइलें] .. ' – LOGAN

0

मुझे अपनी स्क्रिप्ट HERE से मिली है। सौर प्रणाली में लॉग इन करें। ओपन वीआई संपादक। सम्मिलित मोड में जाओ। इस स्क्रिप्ट को कॉपी और पेस्ट करें। फ़ाइल को सहेजें और नाम पीसीपी दें। निष्पादन अनुमति दें। इस स्क्रिप्ट को -पी या -पी स्विथक के साथ चलाएं। यह पीआईडी, प्रोसेस नाम और पोर्ट के साथ एक आउटपुट देगा।

सुनिश्चित करें कि इसे निष्पादित करने के लिए आपको ksh shell में होना चाहिए।

पीसीपी एक ऐसी स्क्रिप्ट है जो प्रशासकों को यह देखने में सक्षम करती है कि सोलारिस सिस्टम पर कौन से खुले टीसीपी पोर्ट उपयोग में हैं। यह बंदरगाहों को पीआईडी ​​और इसके विपरीत बंद करता है। यह वाइल्डकार्ड स्वीकार करता है और सभी खुले बंदरगाहों और उनके संबंधित पीआईडी ​​के एक नज़र में भी दिखाएगा। यह अच्छी लिपि एक बहुत अच्छी तरह से डाल देता है। कर के देखो।

उदाहरण: #pcp -p PORT_NUMBER or #pcp -P PROCESS_ID

#!/usr/bin/ksh 
# 
# # PCP (PID con Port) 
# v1.10 08/10/2010 Sam Nelson sam @ unix.ms 
# 
# If you have a Solaris 8, 9 or 10 box and you can't 
# install lsof, try this. It maps PIDS to ports and vice versa. 
# It also shows you which peers are connected on which port. 
# Wildcards are accepted for -p and -P options. 
# 
# Many thanks Daniel Trinkle trinkle @ cs.purdue.edu 
# for the help, much appreciated. 

# 
i=0 
while getopts :p:P:a opt 
do 
case "${opt}" in 
p) port="${OPTARG}";i=3;; 
P) pid="${OPTARG}";i=3;; 
a) all=all;i=2;; 
esac 
done 
if [ $OPTIND != $i ] 
then 
echo >&2 "usage: $0 [-p PORT] [-P PID] [-a] (Wildcards OK) " 
exit 1 
fi 
shift `expr $OPTIND - 1` 
if [ "$port" ] 
then 
# Enter the port number, get the PID 
# 
port=${OPTARG} 
echo "PID\tProcess Name and Port" 
echo "_________________________________________________________" 
for proc in `ptree -a | awk '/ptree/ {next} {print $1};'` 
do 
result=`pfiles $proc 2> /dev/null| egrep "port: $port$"` 
if [ ! -z "$result" ] 
then 
program=`ps -fo comm= -p $proc` 
echo "$proc\t$program\t$port\n$result" 
echo "_________________________________________________________" 
fi 
done 
elif [ "$pid" ] 
then 
# Enter the PID, get the port 
# 
pid=$OPTARG 
# Print out the information 
echo "PID\tProcess Name and Port" 
echo "_________________________________________________________" 
for proc in `ptree -a | awk '/ptree/ {next} $1 ~ /^'"$pid"'$/ {print $1};'` 
do 
result=`pfiles $proc 2> /dev/null| egrep port:` 
if [ ! -z "$result" ] 
then 
program=`ps -fo comm= -p $proc` 
echo "$proc\t$program\n$result" 
echo "_________________________________________________________" 
fi 
done 
elif [ $all ] 
then 
# Show all PIDs, Ports and Peers 
# 
echo "PID\tProcess Name and Port" 
echo "_________________________________________________________" 
for proc in `ptree -a | sort -n | awk '/ptree/ {next} {print $1};'` 
do 
out=`pfiles $proc 2>/dev/null| egrep "port:"` 
if [ ! -z "$out" ] 
then 
name=`ps -fo comm= -p $proc` 
echo "$proc\t$name\n$out" 
echo "_________________________________________________________" 
fi 
done 
fi 
exit 0 
+0

लेखक को बाहर निकालना/क्रेडिट नाम एक खराब अभ्यास है। http://www.unix.ms/pcp/ – jlliagre

+0

@jiliagre। यह intenationaly नहीं था। मैंने इसे संपादित किया है। :) – LOGAN