web-dev-qa-db-ja.com

AIXでは、ポートにバインドされているプログラムの完全パスを取得するにはどうすればよいですか?

Linuxではnetstat -tulpnwpsのように:

# netstat -tulpnw | grep :53
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      1482/named          
udp        0      0 127.0.0.1:53                0.0.0.0:*                               1482/named          

# ps aux | fgrep 1482
named     1482  0.0  1.0  93656 44900 ?        Ssl  Sep06   3:17 /usr/sbin/named -u named
root     20221  0.0  0.0   4144   552 pts/0    R+   21:09   0:00 fgrep --color=auto 1482
# 

AIX 6でkshを使用しているときに、ポートにバインドされているプログラムの完全パスを取得するにはどうすればよいですか?

14
LanceBaynes

として IBMが推奨lsof -i -nを使用して、ポートXYを探します。 lsofからの解析可能な出力が必要な場合は、-Fフラグを使用して、awkで出力を解析します。

AIX V5のプリコンパイル済みバイナリ を取得できます。 V6用にコンパイル済みのバイナリがあるかどうかはわかりません。ない場合は、 source を取得してコンパイルします。

netstatrmsockとともに使用してみてください。

port=$1
addr=`netstat -Aan | grep $port | awk '{print $1}`
pid=`rmsock $addr tcpcb | awk '{print $9}'`
ps -ef | grep $pid

netstatの場合、-Aはソケットに関連付けられたプロトコル制御ブロックのアドレスを示し、-aオプションはサーバープロセスのソケットを含むすべてのソケットの状態を示し、-nオプションは出力を数値形式で提供するので、アドレスを解決するために時間を無駄にする必要はありません。

rmsockは、netstatのc​​olumn1出力で指定されたアドレスを使用し、tcpcbデータベースを使用して、pidおよび名前を含む、そのソケットを保持しているプロセスに関する情報を返します。

次に、ps -ef | grep $pidを使用してプロセス情報を取得できます。

詳細については、IBM Systems Magazineで この記事 を参照してください。

4
Tim Kennedy

アプリケーションロックポートを見つける最も速い方法の1つは、 lsof または lsof64

lsof64 -nP | grep $PortNumber

または

lsof -nP | grep $PortNumber

上記は、指定されたポート番号を使用してロック/プロセスIDを返すプロセスです。取得したら、以下を実行して実行中のアプリケーション/プロセスを見つけます

proctree $pid
1
Saumil
netstat -ape | grep $PortNumber
0
Anonymous

私はAIXに慣れていませんが、wまたはeのフォーマット引数をpsに試しましたか?

ps uwx | grep 1482
# or 
ps uex | grep 1482
0
frogstarr78