SS — Socket Statistics

If you like this project, consider supporting me on Buy Me a Coffee ☕️


tags:

ss is a modern replacement for netstat, used to investigate sockets and network connections on Linux. It is faster and provides more detailed information than netstat, reading directly from kernel netlink subsystem. Part of the iproute2 package.

📚 Official Docs / Официальная документация: ss(8)

Basic Commands

Show All Sockets

ss                                            # Show all sockets / Показать все сокеты
ss -a                                         # Show all (listening + non-listening) / Показать все
ss -l                                         # Show only listening / Показать только слушающие
ss -t                                         # Show TCP sockets / Показать TCP сокеты
ss -u                                         # Show UDP sockets / Показать UDP сокеты
ss -x                                         # Show Unix sockets / Показать Unix сокеты

Common Combinations

ss -tunlp                                     # TCP+UDP, numeric, listening, processes / TCP+UDP, числовые, слушающие, процессы
ss -tunap                                     # TCP+UDP, numeric, all, processes / TCP+UDP, числовые, все, процессы
ss -tulpn                                     # Same as above (order doesn't matter) / То же (порядок не важен)

Options

ss -n                                         # Don't resolve service names / Не разрешать имена сервисов
ss -p                                         # Show process using socket / Показать процесс использующий сокет
ss -r                                         # Resolve IP addresses / Разрешать IP адреса
ss -e                                         # Show extended info / Показать расширенную информацию
ss -m                                         # Show socket memory usage / Показать использование памяти сокетами

Filtering

By State

ss state established                          # Established connections / Установленные соединения
ss state listening                            # Listening sockets / Слушающие сокеты
ss state time-wait                            # Time-wait sockets / Сокеты в состоянии time-wait
ss state syn-sent                             # SYN-sent connections / Соединения SYN-sent
ss state fin-wait-1                           # FIN-wait-1 connections / Соединения FIN-wait-1

Multiple States

ss state established state syn-recv           # Multiple states / Несколько состояний
ss 'state established or state syn-recv'      # Alternative syntax / Альтернативный синтаксис

By Port

ss sport = :22                                # Source port 22 / Исходный порт 22
ss dport = :80                                # Destination port 80 / Порт назначения 80
ss sport = :1024-65535                        # Source port range / Диапазон исходных портов
ss dport gt :1024                             # Destination port > 1024 / Порт назначения > 1024
ss dport lt :1024                             # Destination port < 1024 / Порт назначения < 1024

By Address

ss src <IP>                                   # Source IP / Исходный IP
ss dst <IP>                                   # Destination IP / IP назначения
ss src 192.168.1.0/24                         # Source subnet / Исходная подсеть

Complex Filters

ss 'sport = :22 and state established'        # SSH established / SSH установленные
ss 'dport = :80 or dport = :443'              # HTTP or HTTPS / HTTP или HTTPS
ss '( dport = :http or dport = :https ) and state established'  # Complex / Сложный

Statistics

Summary

ss -s                                         # Socket summary / Сводка сокетов
ss -s | head -10                              # Top 10 lines / Первые 10 строк

Memory

ss -m                                         # Show socket memory / Показать память сокетов
ss -tm                                        # TCP with memory info / TCP с информацией о памяти

Timer

ss -o                                         # Show timer info / Показать информацию о таймере
ss -to                                        # TCP with timers / TCP с таймерами

Advanced Usage

Show Process Info

sudo ss -tlnp                                 # Listening TCP with processes / Слушающие TCP с процессами
sudo ss -plnt | grep ':80'                    # Process on port 80 / Процесс на порту 80
sudo ss -plnt | awk '$4 ~ /:22$/'             # SSH processes / SSH процессы

Extended Information

ss -e                                         # Extended socket info / Расширенная информация о сокетах
ss -te                                        # TCP extended / TCP расширенное
ss -tem                                       # TCP extended + memory / TCP расширенное + память

Unix Sockets / Unix

ss -x                                         # Unix domain sockets / Unix доменные сокеты
ss -xa                                        # All Unix sockets / Все Unix сокеты
ss -xl                                        # Listening Unix sockets / Слушающие Unix сокеты

Real-World Examples

Find Which Process Uses Port

sudo ss -tlnp | grep ':80'                    # Find process on port 80 / Найти процесс на порту 80
sudo ss -tunlp | grep ':3306'                 # Find MySQL process / Найти процесс MySQL
sudo ss -plnt | awk '$4 ~ /:443$/'            # Find HTTPS process / Найти процесс HTTPS

Count Connections

ss -tan | awk 'NR>1 {print $1}' | sort | uniq -c  # Count by state / Подсчитать по состоянию
ss state established | wc -l                  # Count established / Подсчитать установленные
ss sport = :80 state established | wc -l      # Count HTTP connections / Подсчитать HTTP соединения

Find Top Connections

# Top 10 IPs by connection count
ss -tan | awk 'NR>1 {print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10

# Top ports
ss -tan | awk 'NR>1 {print $4}' | cut -d: -f2 | sort | uniq -c | sort -nr | head -10

Monitor Connections

# Watch established connections
watch -n 1 'ss -tan | grep ESTAB | wc -l'

# Monitor specific port
watch -n 1 'sudo ss -tlnp | grep :80'

Check Listening Services

sudo ss -tunlp                                # All listening ports / Все слушающие порты
sudo ss -tlnp                                 # Only TCP / Только TCP
sudo ss -ulnp                                 # Only UDP / Только UDP
sudo ss -tlnp | sort -k 5                     # Sort by port / Сортировать по порту

Detect TIME_WAIT Issues

ss -tan | grep TIME-WAIT | wc -l              # Count TIME_WAIT connections / Подсчитать TIME_WAIT соединения
ss state time-wait                            # Show TIME_WAIT details / Показать детали TIME_WAIT

Find Zombie Connections

ss state syn-recv                             # Find half-open connections / Найти полуоткрытые соединения
ss state fin-wait-1                           # FIN-wait-1 / FIN-wait-1
ss state fin-wait-2                           # FIN-wait-2 / FIN-wait-2

Check Specific Service

sudo ss -tp state established '( dport = :22 or sport = :22 )'  # SSH connections / SSH соединения
sudo ss -tp '( dport = :3306 or sport = :3306 )'  # MySQL connections / MySQL соединения
sudo ss -tlnp | grep docker                  # Docker connections / Docker соединения

Compare with netstat

ss -tan                                       # netstat -tan
ss -ltn                                       # netstat -ltn
sudo ss -tulpn                                # sudo netstat -tulpn

Export Connection Data

ss -tan | awk 'NR>1 {print $1","$2","$3","$4","$5}' > connections.csv  # Export to CSV / Экспортировать в CSV
echo "$(date),$(ss -tan | grep ESTAB | wc -l)" >> connections-log.csv  # Export with timestamp / С временной меткой

Security Audit

sudo ss -tunlp | grep -v '127.0.0.1\|::1'    # Find unexpected listening ports / Найти неожиданные слушающие порты
sudo ss -tunlp | grep -v 'users:'             # Find non-local listeners / Найти не-локальные слушатели

Reference Tables

Common Options

Option Description (EN / RU)
-t / -u TCP / UDP sockets / сокеты
-l / -a Listening / All sockets / Слушающие / Все сокеты
-n Numeric (no name resolution) / Числовой (без разрешения имён)
-p Show processes / Показать процессы
-e Extended info / Расширенная информация
-m Memory info / Информация о памяти
-o Timer info / Информация о таймере

Socket States

State Description (EN / RU)
ESTABLISHED Active connection / Активное соединение
LISTEN Listening for connections / Слушает соединения
TIME-WAIT Waiting after close / Ожидание после закрытия
SYN-SENT Connection attempt / Попытка соединения
SYN-RECV Connection being established / Соединение устанавливается
FIN-WAIT-1 Connection closing / Соединение закрывается
FIN-WAIT-2 Connection almost closed / Соединение почти закрыто
CLOSE-WAIT Waiting for close / Ожидание закрытия
CLOSING Closing connection / Закрытие соединения
LAST-ACK Waiting for ACK / Ожидание ACK

[!TIP] ss is faster than netstat and provides more detail. Use -n for faster output (no DNS resolution). Use sudo for process info (-p option). / ss быстрее чем netstat. Используйте -n для быстрого вывода. Используйте sudo для информации о процессах.

On this page

linux ss — Socket Statistics Utility Basic Commands Show All Sockets Common Combinations Options Filtering By State Multiple States By Port By Address Complex Filters Statistics Summary Memory Timer Advanced Usage Show Process Info Extended Information Unix Sockets / Unix Real-World Examples Find Which Process Uses Port Count Connections Find Top Connections Monitor Connections Check Listening Services Detect TIME_WAIT Issues Find Zombie Connections Check Specific Service Compare with netstat Export Connection Data Security Audit Reference Tables Common Options Socket States 📚 Documentation Links