AIXでポートにバインドされたプログラムのフルパスをどのように取得しますか?

AIXでポートにバインドされたプログラムのフルパスをどのように取得しますか?

netstat -tulpnwLinuxでは、次のようにps使用できます。

# 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
# 

kshAIX 6で使用するときに、ポートにバインドされたプログラムのフルパスをどのように取得しますか?

答え1

〜のようにIBM が推奨lsof -i -nポートXYを使用して検索します。で解析可能な出力が必要な場合は、lsofこの-Fフラグを使用してawkを使用して出力を解析します。

あなたは得ることができますAIX V5用のプリコンパイル済みバイナリ。 V6用にプリコンパイルされたバイナリがあるかどうかはわかりません。そうでない場合はダウンロードしてください。源泉そしてそれをコンパイルします。

答え2

netstatと一緒に試してみてくださいrmsock

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、出力の列1で指定されたアドレスを使用netstatし、tcpcbデータベースを使用すると、pidや名前を含むソケットを保持するプロセスに関する情報が返されます。

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

あなたは見ることができますこの記事これについて詳しくは、IBM Systems Magazineを参照してください。

答え3

アプリケーションがロックされたポートを探す最速の方法の1つは、次を使用することです。ラソフまたはlsof64:

lsof64 -nP | grep $PortNumber

または

lsof -nP | grep $PortNumber

上記は、指定されたポート番号をロック/使用するプロセスIDを返します。一度お持ちの場合は、以下を実行して実行中のアプリケーション/プロセスを見つけます。

proctree $pid

答え4

netstat -ape | grep $PortNumber

関連情報