このポートは誰が開いているの? このプロセスはどのポートをリスンしているの? - lsof
lsof でプロセスとポートの関係を暴くことが出来るのは知っていたけどもやったことがありませんでした。
ちょっと手を動かしてみたのでメモ。
・特定のポートを開いているプロセスを確認する方法
1. netstat で開かれているポートを確認
2. lsof -i:[port] でプロセスID を確認
他のユーザがリスンしている場合は root で確認する必要がある。
root 以外で lsof を実行して、他のユーザがリスンしている場合は特にエラーも出ない。
3. ps でプロセスの詳細を確認
$ netstat -an|grep LISTEN|sort
tcp4 0 0 *.3951 *.* LISTEN
tcp4 0 0 *.5432 *.* LISTEN
tcp4 0 0 127.0.0.1.1033 *.* LISTEN
tcp4 0 0 127.0.0.1.631 *.* LISTEN
tcp6 0 0 *.5432 *.* LISTEN
$ sudo /usr/sbin/lsof -i:5432
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 180 postgres 5u IPv6 0x02feac50 0t0 TCP *:postgresql (LISTEN)
postgres 180 postgres 6u IPv4 0x039eee8c 0t0 TCP *:postgresql (LISTEN)
$ ps aux -p 180
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
postgres 180 0.0 -0.0 33488 1004 ?? S 1Jan70 0:00.33 /usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql/data
tcp4 0 0 *.3951 *.* LISTEN
tcp4 0 0 *.5432 *.* LISTEN
tcp4 0 0 127.0.0.1.1033 *.* LISTEN
tcp4 0 0 127.0.0.1.631 *.* LISTEN
tcp6 0 0 *.5432 *.* LISTEN
$ sudo /usr/sbin/lsof -i:5432
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 180 postgres 5u IPv6 0x02feac50 0t0 TCP *:postgresql (LISTEN)
postgres 180 postgres 6u IPv4 0x039eee8c 0t0 TCP *:postgresql (LISTEN)
$ ps aux -p 180
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
postgres 180 0.0 -0.0 33488 1004 ?? S 1Jan70 0:00.33 /usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql/data
Windows では Process Explorer で調べられます。
・特定のプロセスがリスンしているポートを確認する方法
1. lsof -p [pid] で一覧
2. registered port が表示された場合、具体的なポート番号が知りたい場合は
IANA で調べられる。
#コマンドではどうやって調べるんでしょう??
$ sudo /usr/sbin/lsof -p 180 |grep LISTEN
postgres 180 postgres 5u IPv6 0x02feac50 0t0 TCP *:postgresql (LISTEN)
postgres 180 postgres 6u IPv4 0x039eee8c 0t0 TCP *:postgresql (LISTEN)
postgres 180 postgres 5u IPv6 0x02feac50 0t0 TCP *:postgresql (LISTEN)
postgres 180 postgres 6u IPv4 0x039eee8c 0t0 TCP *:postgresql (LISTEN)
Windows の場合はこちらのエントリを参照。
・このポートは誰が開いているの? このプロセスはどのポートをリスンしているの? - Windows 編
| Tweet |
Re: このポートは誰が開いているの? このプロセスはどのポートをリスンしているの? - lsof
MAMPを起動したのですが、正常にApacheサーバが起動しません。しかし、MySQLの方は、正常に起動します。
エラーログを確認したところ、よく意味が分からないのが正直な気持ちです。
Apacheのエラーログ;Unhandled transform (1) for ioctl group = 104 (h), number = 4, length = 8
MySQlのエラーログについては、Apacheが正常に動作しないためのエラーです。
一つ要因としては、以前Mac版のXAMPPをインストールしたことがあります。そのときは、Apacheは、正常に起動したのですがMySQlは起動しなかった記憶があります。
また、今回のことで少し調べてみた内容では、正常に起動しない要因はすでにポートが使用されていることと書かれていました。
ポートの変更?または、何かしらの方法があればぜひ、その解決策を教えていただきたいと思っています。
