ポートを使用中のプロセスを特定する

MacのDockerで80番ポートを使おうとしたら使用中だった。試しにlocalhostにアクセスしたら It works! なる表示が出た。どうもapacheが建っているみたいだ。 使用していたMacは複数人に渡って受け継がれてきたもので誰かがapacheを動かしていてもおかしくない。

80番ポートを使用しているプロセスを表示

$ sudo lsof -i:80 | grep LISTEN
httpd      110     root    4u  IPv6 0x****************      0t0  TCP *:http (LISTEN)
httpd      374     _www    4u  IPv6 0x****************      0t0  TCP *:http (LISTEN)
httpd     1470     _www    4u  IPv6 0x****************      0t0  TCP *:http (LISTEN)
httpd     1471     _www    4u  IPv6 0x****************      0t0  TCP *:http (LISTEN)
httpd     1472     _www    4u  IPv6 0x****************      0t0  TCP *:http (LISTEN)

やはりhttpdが使っている。

httpdのプロセスを確認

$ ps -ax | grep httpd
  110 ??         0:00.46 /usr/sbin/httpd -D FOREGROUND
  374 ??         0:00.03 /usr/sbin/httpd -D FOREGROUND
 1470 ??         0:00.00 /usr/sbin/httpd -D FOREGROUND
 1471 ??         0:00.00 /usr/sbin/httpd -D FOREGROUND
 1472 ??         0:00.01 /usr/sbin/httpd -D FOREGROUND
 1671 ttys001    0:00.00 grep httpd

/usr/sbin/httpd、どうもMac標準のapacheが動いているみたい。

自動起動の設定の確認と解除

確認

$ sudo launchctl list | grep httpd
110    0  org.apache.httpd

解除

$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

参考

weblabo.oscasierra.net