Порт уже занят
Сломай-почини · Среднее · 20 мин · 150 баллов
Порт уже занят
Веб-служба app не может запуститься: при старте пишет bind: address already in use —
её TCP-порт 8080 уже занят другим процессом.
Задача
Сделай так, чтобы:
- порт
8080слушала именно службаapp, а не посторонний процесс; - конфликтующий процесс был корректно остановлен (а не порт у
appпереназначен на другой); - служба
appбыла активна и отвечала наhttp://localhost:8080/.
Подсказки по подходу
- Кто слушает порт:
sudo ss -ltnp | grep :8080— покажет PID и имя процесса. - Что это за процесс:
ps -fp <PID>; если он принадлежит службе, её юнит покажетsystemctl status <PID>. - Останавливай аккуратно: службу — через
systemctl stop, одиночный процесс —kill. - Проверяй результат по кнопке «Проверить».
Всё нужное уже установлено. Интернет на машине отсутствует — и не понадобится.
Подсказки
Подсказка 1
Узнай, кто держит порт: sudo ss -ltnp | grep :8080. В колонке users: будет имя
процесса и его PID.
Подсказка 2
Разберись, что это за процесс: ps -fp <PID>. Если он принадлежит службе,
systemctl status <PID> покажет её юнит. Цель — освободить порт, остановив именно этого
«захватчика», а не меняя порт у app.
Подсказка 3
Останови конфликтующий процесс правильно: службу — sudo systemctl stop <unit> (и при
необходимости disable), одиночный процесс — sudo kill <PID>. Затем подними нужную
службу sudo systemctl restart app и проверь ss -ltnp | grep :8080 и
curl -I http://localhost:8080/.
Поднимет вашу личную эфемерную Linux-ВМ для задания — обычно пара секунд. После работы её можно остановить.