2012-11-06 59 views
5

我想在SunOS上使用端口7085獲得進程。我試過下面的命令。如何獲得與特定端口連接的進程ID

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的版本是5.10的SunOS。我相信netstat是唯一可以做到這一點的命令。

netstat的確切開關是什麼,它會給我帶有端口的進程ID?

+0

哪個版本的SunOS?我認爲這是超過十年以來所謂的Solaris! –

+0

@basile。該版本是SunOS 5.10 Generic_118833-33 sun4v sparc SUNW,Sun-Fire-T200 – LOGAN

+0

@Basile ..僅供參考,我正在運行這個Commans作爲超級用戶... – 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與此同時
  • 每一行的起始死亡的輟學由於瞬態過程的錯誤用一個數字後跟一個冒號報告進程ID和詳細信息存儲在awk pid變量
  • 當一行以字符串port: <portnumber>(這裏是7085)結束時,顯示相應的pid變量。

注意:您需要所需的特權才能從您不擁有的進程(root擁有所有特權)獲取端口信息。

+1

沒有爲我工作。幾秒鐘後命令沒有返回任何東西。 – LOGAN

+2

我在內部使用的腳本使用pfiles來獲取詳細信息。 – LOGAN

+2

代碼簡化和修復。 – jlliagre

3

看看lsof http://linux.about.com/library/cmd/blcmdl8_lsof.htm命令。

該命令描述哪些進程正在使用哪些文件描述符。請記住,端口7085上的任何內容都會有自己的文件描述符,您可以使用它來追溯到正在使用它的進程。

我會嘗試這樣的:

$ lsof -i :7085 

希望它可以幫助。

+0

是的。我試圖說不幸的是,該命令不可用。我會安裝這個軟件包,但它是生產服務器,我沒有權利在服務器上安裝任何東西,並且不止一臺服務器有超過200多臺服務器。我試圖得到solaris上可用命令的幫助... – LOGAN

+0

@LOGAN你有熱熔器嗎?試試這個: fuser -4 -v -n tcp 7085 – andrefsp

+0

它不起作用。我得到了以下put.fuser:非法選項 - 4 '非法選項? 用法:fuser [ - [k | s sig] un [c | f | d]] files [ - [[k | s sig] un [c | f | d]] files] ..' – LOGAN

0

我從HERE得到了他的劇本。登錄solaris系統。打開vi編輯器。進入插入模式。複製並粘貼此腳本。保存文件並給出名稱PCP。給予執行權限。使用-p或-P swithc運行此腳本。它將給出一個帶有PID,PROCESS名稱和端口的輸出。

確保你需要在ksh shell中執行它。

PCP是一種腳本,使管理員能夠查看Solaris系統上正在使用的打開的TCP端口。它將端口映射到PID,反之亦然。它接受通配符,並且還會一目瞭然地顯示所有開放端口及其相應的PID。這是很好的腳本給出了一個非常好的輸出。去嘗試一下。

例子: #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。這不是專有的。我編輯過它。 :) – LOGAN

相關問題