我不能让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,但没有帮助
我怎样才能找出什么是使用端口?
在人们习惯了netstat
进行这种操作的情况下,很高兴知道Linux有另一个伟大的networking工具 – ss
。 例如, 要找出哪个进程打开了80端口,请运行它:
sudo ss -pt state listening 'sport = :80'
所以不需要通过外部filter。 当然,它有更多有用的旋钮,所以让自己熟悉它。
为了完整起见,从最近我遇到了man fuser
,我也可以提到:
sudo fuser 80/tcp
– 这个也可以让你免于在cut
/ grep
/ awk
…记住这个符号是一个捷径,如果有歧义,你应该使用-n …
允许的命名空间之一sudo fuser -n tcp 80
sudo lsof -n -sTCP:LISTEN -i:80
– 被@ wallenborn 指出 。 同时-n
不是严格要求强烈build议,因为否则它使用DNSparsing哪些通常减慢输出非常。
Address already in use
意味着另一个进程已经在端口80上进行侦听。一次只能有一个进程侦听给定的端口。
要查找进程,请以root身份运行:
netstat -tnlp | grep -w 80
违规过程将被列出。
另一个selectless击键是lsof:
lsof -i :80
老线索,但谁知道,有人有我一样的问题。 在Apache2中,我启用了多个站点。 在其中一个站点configuration(/ etc / apache2 / sites-available)中,第一行是
listen 80
这导致与Apache本身的冲突! 因为它已经作为全局configuration在端口80上侦听。 如果Apache将端口80作为默认端口,只需从yoursite.conf中删除“listen 80”即可。