← Назад к вопросам
Как проверить доступность порта на Linux?
2.0 Middle🔥 201 комментариев
#DevOps и инфраструктура
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Способы проверки доступности порта на Linux
Проверка доступности портов — это критическая задача при разработке и отладке приложений. На Linux существует несколько проверенных методов.
1. Утилита netstat
Классический инструмент для анализа сетевых соединений:
netstat -tuln | grep :8080
netstat -tuln | grep LISTEN
Параметры:
-t— TCP соединения-u— UDP соединения-l— слушающие сокеты-n— числовой формат (IP:PORT)
2. Утилита ss (рекомендуется)
Современная замена netstat, встроена во все дистрибутивы:
ss -tuln | grep :8080
ss -tlnp # с названиями процессов
3. lsof — Список открытых файлов
Мощный инструмент для проверки процессов, занимающих порт:
lsof -i :8080
lsof -i TCP:8080
lsof -i :8080 -sTCP:LISTEN
Отобразит PID, имя процесса и пользователя, владеющего соединением.
4. Проверка из Python
Для программной проверки доступности порта:
import socket
def is_port_open(host: str, port: int, timeout: int = 2) -> bool:
"""Проверяет, открыт ли порт на хосте"""
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(timeout)
try:
result = sock.connect_ex((host, port))
return result == 0
finally:
sock.close()
# Использование
if is_port_open("localhost", 8080):
print("Порт 8080 открыт")
else:
print("Порт 8080 закрыт")
5. Проверка с использованием telnet
Простой способ проверить соединение:
telnet localhost 8080
Или через echo и /dev/tcp:
(echo >/dev/tcp/localhost/8080) && echo "Порт открыт" || echo "Порт закрыт"
6. Проверка с использованием curl
curl -v telnet://localhost:8080
Быстрая шпаргалка
| Команда | Назначение |
|---|---|
ss -tuln | Все слушающие сокеты |
ss -tuln | grep :8080 | Проверить порт 8080 |
lsof -i :8080 | Процесс на порту 8080 |
netstat -tulnp | Все подключения с PID |
cat /etc/services | Стандартные порты |
Практические советы
При разработке приложения:
- Используйте
ss -tlnpдля полной информации о слушающих портах - Проверяйте через
lsof -iперед запуском нового сервиса - В скриптах используйте Python socket или curl для автоматизации
При решении проблем:
- Проверьте правила firewall:
sudo ufw status - Убедитесь, что приложение действительно слушает порт
- Используйте
tcpdumpдля анализа трафика - Проверьте логи приложения на ошибки binding
В production:
- Мониторьте открытые порты регулярно
- Закрывайте неиспользуемые порты на firewall
- Используйте только необходимые портовые привязки