Linuxではnetstat -tulpnw
と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
#
AIX 6でksh
を使用しているときに、ポートにバインドされているプログラムの完全パスを取得するにはどうすればよいですか?
として IBMが推奨 :lsof -i -n
を使用して、ポートXYを探します。 lsof
からの解析可能な出力が必要な場合は、-F
フラグを使用して、awkで出力を解析します。
AIX V5のプリコンパイル済みバイナリ を取得できます。 V6用にコンパイル済みのバイナリがあるかどうかはわかりません。ない場合は、 source を取得してコンパイルします。
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
は、netstat
のcolumn1出力で指定されたアドレスを使用し、tcpcb
データベースを使用して、pidおよび名前を含む、そのソケットを保持しているプロセスに関する情報を返します。
次に、ps -ef | grep $pid
を使用してプロセス情報を取得できます。
詳細については、IBM Systems Magazineで この記事 を参照してください。
アプリケーションロックポートを見つける最も速い方法の1つは、 lsof または lsof64:
lsof64 -nP | grep $PortNumber
または
lsof -nP | grep $PortNumber
上記は、指定されたポート番号を使用してロック/プロセスIDを返すプロセスです。取得したら、以下を実行して実行中のアプリケーション/プロセスを見つけます
proctree $pid
netstat -ape | grep $PortNumber
私はAIXに慣れていませんが、w
またはe
のフォーマット引数をps
に試しましたか?
ps uwx | grep 1482
# or
ps uex | grep 1482