Debian - Cổng 80 bị chặn, nhưng tôi không biết điều gì


8

Tôi không thể làm cho lighttpd nghe cổng 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!

Trên thực tế tôi cũng đã cài đặt apache2 trên máy chủ của mình (nghe cổng 80) nhưng nó không hoạt động.

Tôi đã sử dụng netstat / netstat -npl nhưng nó không hữu ích

Làm thế nào tôi có thể tìm ra những gì đang sử dụng cổng?

Câu trả lời:


27

Trong khu vực của mọi người đã quen netstatvới các loại hoạt động như vậy, thật tốt khi biết rằng Linux có một công cụ mạng tuyệt vời (và, thực sự vượt trội) - ss. Ví dụ: để tìm hiểu quá trình nào đã mở cổng 80, bạn chạy nó như vậy:

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

vì vậy không cần phải đi qua các bộ lọc bên ngoài. Chắc chắn nó có nhiều nút bấm hữu ích hơn, vì vậy hãy làm quen với nó.

Để hoàn thiện và vì gần đây tôi đã đi qua man fuser, tôi cũng có thể đề cập:

  • sudo fuser 80/tcp- cái này cũng giúp bạn tránh khỏi việc mày mò tại cut/ grep/ awkHãy nhớ rằng ký hiệu này là một cách rút gọn, trong trường hợp có sự mơ hồ, bạn nên sử dụng một trong các không gian tên được phép với -n …, nhưsudo fuser -n tcp 80

  • sudo lsof -n -sTCP:LISTEN -i:80- được chỉ ra bởi @ wallenborn . Trong khi đó, -nkhông bắt buộc nghiêm ngặt, nó được khuyến khích mạnh mẽ vì nếu không, nó sử dụng phân giải DNS thường làm chậm sản lượng một cách khủng khiếp.


@Goot, nếu bạn có nghĩa là nhị phân, vâng, ít nhất ls -l /proc/PID/exesẽ làm. Và bạn có nghĩa là dir công việc hiện tại của nó, xem …/cwd.
poige

5

Address already in use có nghĩa là một quá trình khác đã lắng nghe trên cổng 80. Mỗi lần chỉ có một quá trình có thể nghe trên một cổng nhất định.

Để tìm quá trình, hãy chạy bằng root:

netstat -tnlp | grep -w 80

Quá trình vi phạm sẽ được liệt kê.


cảm ơn, tôi đã tìm ra có một ví dụ khác về lighttpd đang chạy. Tôi sẽ chấp nhận câu trả lời của bạn khi có thể.
Goot

4

Một tùy chọn khác có ít tổ hợp phím hơn là lsof:

lsof -i :80

Không. Nó không chỉ hiển thị các quá trình nghe.
poige

1
Sử dụng đúng lâu hơn một chút:lsof -n -sTCP:LISTEN -i:22
poige 18/03/13

1
Sử dụng đúng là lâu hơn một chút : sudo lsof -n -sTCP:LISTEN -i:80. Và tốt hơn hết là sử dụng sudomột cách rõ ràng để nhấn mạnh rằng trừ khi người dùng có quyền vượt trội, anh ta có thể không có được kết quả chính xác.
poige

0

Chủ đề cũ nhưng ai biết, ai đó có cùng một vấn đề tôi đã có. Trong Apache2 tôi đã kích hoạt nhiều hơn một trang web. Trong một trong các cấu hình trang web (/ etc / apache2 / site-Available), dòng đầu tiên là

listen 80

Điều này gây ra một cuộc xung đột với chính Apache! Bởi vì nó đã nghe trên cổng 80 như một cấu hình toàn cầu. Chỉ cần xóa 'nghe 80' khỏi yoursite.conf nếu Apache có cổng 80 làm cổng mặc định.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.