Ответ
Проверка открытых портов — стандартная задача при настройке сервисов, диагностике сетевых проблем и аудите безопасности. Я предпочитаю использовать современные утилиты.
1. ss (Socket Statistics) — замена устаревшему netstat, быстрее и информативнее:
# Показать все слушающие (LISTEN) TCP и UDP порты с числовыми адресами
ss -tuln
# Расшифровка флагов:
# -t — TCP порты
# -u — UDP порты
# -l — только слушающие порты (ожидающие подключений)
# -n — не резолвить имена хостов и сервисов (быстрее)
# Показать все установленные TCP-соединения
ss -tn
2. lsof (List Open Files) — мощный инструмент, показывает, какой процесс использует порт:
# Показать все процессы, слушающие сетевые порты
sudo lsof -i -P -n | grep LISTEN
# Показать, что использует конкретный порт (например, 80)
sudo lsof -i :80
3. Для быстрой проверки доступности порта извне:
# Утилита netcat (nc)
nc -zv localhost 22 # Проверит, доступен ли SSH-порт на localhost
# Или telnet
telnet localhost 22
Контекст DevOps: В сценариях автоматизации (например, в скриптах ожидания готовности сервиса — health check) часто использую nc или curl для проверки, открылся ли порт после запуска контейнера или службы в пайплайне развертывания.