Debian - Port 80 diblokir, tapi saya tidak tahu apa

8

Saya tidak bisa membuat lighttpd mendengarkan port 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!

Sebenarnya saya sudah menginstal apache2 di server saya juga (mendengarkan port 80) tetapi tidak aktif.

Saya menggunakan netstat / netstat -npl tetapi tidak membantu

Bagaimana saya mengetahui apa yang menggunakan porta?

Goot
sumber

Jawaban:

27

Di depsite orang yang terbiasa dengan netstatoperasi semacam itu, perlu diketahui, bahwa Linux memiliki alat jaringan hebat (dan, sebenarnya lebih unggul) - ss. Misalnya, untuk mengetahui proses mana yang telah membuka port 80 Anda menjalankannya:

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

jadi tidak perlu menyalurkan melalui filter eksternal. Tentunya ia memiliki banyak tombol yang berguna, jadi biasakan diri Anda dengan itu.

Demi kelengkapan dan karena baru-baru ini saya temui man fuser, saya juga bisa menyebutkan:

  • sudo fuser 80/tcp- yang ini juga menyelamatkan Anda dari bermain-main di cut/ grep/ awk... perlu diingat notasi ini jalan pintas, jika ada ambiguitas, Anda harus menggunakan salah satu ruang nama yang diizinkan -n …, sepertisudo fuser -n tcp 80

  • sudo lsof -n -sTCP:LISTEN -i:80- ditunjukkan oleh @ wallenborn . Sementara -nitu tidak sepenuhnya diperlukan itu sangat disarankan karena jika tidak menggunakan penyelesaian DNS yang biasanya memperlambat output sangat.

poige
sumber
@Boot, jika maksud Anda biner, ya, setidaknya ls -l /proc/PID/exeakan dilakukan. Dan maksud Anda dir pekerjaan saat ini, lihat …/cwd.
poige
5

Address already in use berarti bahwa proses lain sudah mendengarkan pada port 80. Hanya satu proses dapat mendengarkan pada port yang diberikan pada suatu waktu.

Untuk menemukan prosesnya, jalankan sebagai root:

netstat -tnlp | grep -w 80

Proses menyinggung akan terdaftar.

Michael Hampton
sumber
terima kasih, saya tahu ada contoh lain dari menjalankan lighttpd. Saya akan menerima jawaban Anda jika memungkinkan.
Goot
4

Pilihan lain dengan penekanan tombol lebih sedikit adalah lsof:

lsof -i :80
wallenborn
sumber
Nggak. Ini menunjukkan tidak hanya proses mendengarkan.
poige
1
Penggunaan yang benar sedikit lebih lama:lsof -n -sTCP:LISTEN -i:22
poige
1
Penggunaan yang benar adalah sedikit lebih lama: sudo lsof -n -sTCP:LISTEN -i:80. Dan lebih baik menggunakan sudosecara eksplisit untuk menekankan bahwa kecuali jika pengguna memiliki izin yang lebih baik, dia mungkin tidak akan mendapatkan hasil yang benar.
poige
0

Utas lama tapi siapa tahu, seseorang memiliki masalah yang sama dengan saya. Di Apache2 saya memiliki lebih dari satu situs yang diaktifkan. Di salah satu konfigurasi situs (/ etc / apache2 / sites-available) baris pertama adalah

listen 80

Ini menyebabkan konflik dengan Apache sendiri! Karena sudah mendengarkan pada port 80 sebagai konfigurasi global. Hapus saja 'listen 80' dari yoursite.conf jika Apache memiliki port 80 sebagai port default.

Pianoman
sumber