GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa memeriksa port mana yang sibuk dan port mana yang kosong di mesin Linux saya?

Perintah

netstat -antu

akan menampilkan semua port tcp dan udp yang digunakan. Outputnya akan terlihat seperti ini:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:59753           0.0.0.0:*               LISTEN

Angka setelah titik dua di bidang Alamat Lokal menunjukkan port yang digunakan. Jika statusnya adalah "DENGARKAN" itu berarti port yang digunakan untuk koneksi masuk. Jika alamat IP di Local Address kolomnya adalah 0.0.0.0 itu berarti koneksi masuk akan diterima pada alamat IP apa pun yang ditetapkan ke antarmuka - jadi ini berarti dari koneksi yang berasal dari luar mesin Anda.

Jika tertulis localhost atau 127.0.0.1 itu hanya akan menerima koneksi dari mesin Anda.

Selain itu, jika Anda menambahkan -p parameter, dan jalankan sebagai root, ini akan menampilkan proses yang membuka port:

$ sudo netstat -antup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:59753           0.0.0.0:*               LISTEN      860/rpc.statd

Apa pun yang tidak ditampilkan sedang digunakan adalah gratis, namun pengguna (akun yang tidak memiliki hak istimewa) hanya dapat membuka port di atas 1023.


Saya menyusun daftar kecil sendiri.

Beberapa favorit saya adalah:

netstat -tulpn
lsof -i -n -P

Cara yang baik dan andal untuk memeriksa port yang terbuka adalah menggunakan ss (pengganti netstat yang sudah tidak digunakan lagi ), dapat digunakan dalam skrip tanpa memerlukan hak istimewa yang lebih tinggi (mis. sudo ).

Penggunaan:opsi -l untuk mendengarkan port, opsi -n untuk melewati resolusi DNS, dan filter pada port sumber NN :src :NN (ganti NN oleh port yang ingin Anda pantau). Untuk opsi lainnya, lihat man ss

ss -ln src :NN

Contoh:

[[email protected] ~]# ss -ln src :80
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port
LISTEN      0      128                      *:80                *:*
[[email protected] ~]# ss -ln src :81
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port

Dan dalam skrip, menggunakan grep, kita dapat menguji apakah output berisi port yang kita minta. Contoh dengan port 80 yang digunakan (lihat di atas):

myport=80
# count the number of occurrences of port $myport in output: 1= in use; 0 = not in use
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 80 is in use (result == 1)

Contoh dengan port 81 tidak digunakan (lihat di atas)

myport=81
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 81 is NOT in use (result == 0)

Linux
  1. Periksa layanan mana yang mendengarkan pada port linux yang diberikan

  2. Periksa port dan proses apa yang berjalan di Ubuntu

  3. Bagaimana saya bisa memeriksa definisi terminal mana yang tersedia?

  1. Cara Memeriksa Modul Apache mana yang Diaktifkan/Dimuat di Linux

  2. Cara Memeriksa Port Terbuka di Linux dengan netstat, lsof, dan nmap

  3. Cara memeriksa Versi OS dan Linux

  1. Bagaimana cara memeriksa Modul PHP dan Apache yang Terinstal di Linux?

  2. Bagaimana cara menguji port mana yang dijalankan MySQL dan apakah itu dapat dihubungkan?

  3. Bagaimana saya bisa memeriksa apakah PostgreSQL diinstal atau tidak melalui skrip Linux?