
Я пытаюсь лучше понять поведение, которое я наблюдаю - я взял под контроль сервер, на котором был запущен TFTP, и пытаюсь его отключить. Я уже запустил:
systemctl stop tftp
systemctl stop xinetd
Однако при остановке службы tftp появляется сообщение
Предупреждение: останавливается tftp.service, но его все еще можно активировать с помощью: tftp.socket
ss -lnpu
потом дает мне
UNCONN 0 0 :::69
:::* users:(("systemd",pid=1,fd=60))
Я проверил, и порт действительно все еще слушает, но PID указан как systemd? Я не понимаю поведение - как TFTP запускается напрямую systemd?
Редактировать: Я понял, что была еще одна "служба" под названием tftp.socket, которая работала и держала сокет открытым после того, как я убил tftp.service. Чего я до сих пор не понимаю, так это почему это отображается как часть systmed pid.
решение1
tftp-сервер запускается для обработки tftp-запроса. Поскольку такого запроса нет, systemd
не запускает tftp-сервер. Но должен быть процесс, который прослушивает входящий запрос на порту 69, иначе этот запрос попадает в bitbucket.
Этот процесс называется systemd.
Когда приходит запрос на порт 69, systemd отключает tftp-сервер для обработки запроса. Когда tftp-сервер завершает работу, он просто умирает.