Debian - 端口 80 被阻止,但我不知道是什么原因

Debian - 端口 80 被阻止,但我不知道是什么原因

我无法让 lighttpd 监听端口 80。

~# /etc/init.d/lighttpd start
Starting web server: lighttpd2013-03-16 23:15:02: (network.c.379) can't bind to port:  80 Address already in use
 failed!

实际上我的服务器上也安装了 apache2(监听端口 80)但它并未处于活动状态。

我使用了 netstat / netstat -npl,但没有帮助

我怎样才能知道正在使用该端口?

答案1

尽管人们已经习惯了netstat对于此类操作,值得一提的是,Linux 还有另一个出色的(实际上更高级的)网络工具 —ss。例如,找出哪个进程打开了端口 80你这样运行它:

sudo ss -pt state listening 'sport = :80'

所以无需通过外部过滤器。当然它还有很多有用的旋钮,所以请熟悉它。

为了完整起见,最近我遇到了man fuser,我还可以提一下:

  • sudo fuser 80/tcp— 这个也能让你免于修改cut// … 请记住grepawk这个符号是一个快捷方式,如果出现歧义,你应该使用允许的命名空间之一-n …,例如sudo fuser -n tcp 80

  • sudo lsof -n -sTCP:LISTEN -i:80- 曾是指出经过 @瓦伦博恩。虽然-n这不是严格要求的,但强烈建议这样做,因为否则它会使用 DNS 解析,而这通常会严重减慢输出速度。

答案2

Address already in use意味着另一个进程已经在监听端口 80。每次只能有一个进程监听给定端口。

要查找该进程,请以 root 身份运行:

netstat -tnlp | grep -w 80

违规进程将被列出。

答案3

另一个按键较少的选项是 lsof:

lsof -i :80

答案4

旧帖子,但谁知道呢,有人和我遇到了同样的问题。在 Apache2 中,我启用了多个站点。在其中一个站点配置(/etc/apache2/sites-available)中,第一行是

listen 80

这导致了与 Apache 本身的冲突!因为它已经将端口 80 作为全局配置进行监听。如果 Apache 将端口 80 作为默认端口,则只需从 yoursite.conf 中删除“listen 80”即可。

相关内容