데비안-포트 80이 차단되었지만 무엇을 알지 못합니다


8

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을 사용했지만 도움이되지 않았습니다.

포트를 사용하는 것이 무엇인지 어떻게 알 수 있습니까?

답변:


27

사람들이 netstat그런 종류의 작업에 익숙해 졌다는 사실에 리눅스에는 또 다른 훌륭한 (그리고 실제로는 우수한) 네트워킹 도구가 있다는 것을 아는 것이 좋습니다 ss. 예를 들어 어떤 프로세스가 포트 80열 었는지 확인 하려면 다음과 같이 실행하십시오.

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

따라서 외부 필터를 통해 파이프 할 필요가 없습니다. 확실히 더 유용한 노브가 있으므로 익숙해 지십시오.

완벽을 기하기 위해 최근에 나는 man fuser을 만났다.

  • sudo fuser 80/tcp-이 하나도에서 땜질에서 당신을 저장 cut/ grep/ awk이 표기법은 짧은 컷을 염두에 ... 계속 모호한있을 경우에, 당신은으로 허용 네임 스페이스 중 하나를 사용해야 -n …처럼,sudo fuser -n tcp 80

  • sudo lsof -n -sTCP:LISTEN -i:80— @ wallenborn에 의해 지적되었습니다 . 한편 엄격하게 요구되는 것은 아닙니다. 그렇지 않으면 DNS 분석을 사용하기 때문에 일반적으로 출력 속도가 크게 느려집니다.-n


@ Goot, 바이너리를 의미한다면 적어도 그렇습니다 ls -l /proc/PID/exe. 그리고 현재 작업 디렉토리를 의미합니다 …/cwd.
poige

5

Address already in use 다른 프로세스가 이미 포트 80에서 수신 대기 중임을 의미합니다. 한 번에 하나의 프로세스 만 주어진 포트에서 청취 할 수 있습니다.

프로세스를 찾으려면 루트로 실행하십시오.

netstat -tnlp | grep -w 80

문제의 프로세스가 나열됩니다.


덕분에 lighttpd의 다른 인스턴스가 실행되고 있음을 알았습니다. 가능하면 답변을 받겠습니다.
Goot

4

키 입력 횟수가 적은 다른 옵션은 lsof입니다.

lsof -i :80

아니. 청취 프로세스뿐만 아니라
poige

1
올바른 사용은 조금 더 길다 :lsof -n -sTCP:LISTEN -i:22
poige

1
올바른 사용은 조금 더 깁니다 : sudo lsof -n -sTCP:LISTEN -i:80. 또한 sudo사용자에게 우수한 권한이 없으면 올바른 결과를 얻지 못할 수 있음을 강조 하기 위해 명시 적 으로 사용하는 것이 좋습니다 .
poige

0

오래된 스레드이지만 누가 알더라도 누군가 내가 가진 것과 같은 문제가 있습니다. Apache2에서는 둘 이상의 사이트가 활성화되었습니다. 사이트 구성 중 하나 (/ etc / apache2 / sites-available)에서 첫 번째 줄은

listen 80

이로 인해 Apache 자체와 충돌이 발생했습니다! 이미 포트 80에서 전역 구성으로 수신하고 있었기 때문입니다. Apache에 포트 80이 기본 포트 인 경우 yoursite.conf에서 'listen 80'을 제거하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.