Какие действия предпринять в случае возникновения ошибки «Address already in use»?
Не закрытые соединения занимают порт, даже после завершения программы. Чаще всего операционная система закрывает их сама по себе. Можно ли это делать вручную, и какие есть способы?
netstat отображает сетевую активность системы. Из существующих сетевых сервисов мы можем отфильтовать интересующий нас.
sudo netstat -tulpn | grep :6001
tcp 0 0 127.0.0.1:6001 0.0.0.0:* LISTEN 12345/python
Номер процесса, который занимает порт 12345. Принудительно уничтожим его:
sudo kill -9 12345
Утилита fuser находит номер процесса по порту.
fuser 6001/tcp
6001/tcp: 12345
С помощью флага -k процесс будет остановлен.
fuser -k 6001/tcp
lsof - отображает все процессы связанные с файловыми дескрипторами. С помощью флага — i можно фильтровать сетевые сокеты:
lsof -i :6001
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python 11778 uralbash 7u IPv4 5754939 0t0 TCP localhost:http-alt (LISTEN)
Как закрыть процесс в Linux по названию