После того, как я прочитал вопрос и ответ Значение " exec env COMMAND " возможным решением может быть префикс env…
с помощью exec
. Это предотвратит порождение дочернего процесса. Однако ps
выводит {svscanboot} / bin / sh / opt / bin / svscanboot
. Это имя изменится на svscan / opt / service
после выполнения exec
.
Другой способ справиться с этим - с помощью ловушки, которая передает сигналы дочернему процессу.Например, Переслать SIGTERM потомку в Bash или более подробно объясненный http://veithen.github.io/2014/11/16/sigterm-propagation.html {{1} } Проблема с этим маршрутом решения заключается в том, что сигнал SIGKILL, также известный как номер сигнала -9
, не может быть перехвачен.
Чтобы не перехватить сигнал KILL, я выберу маршрут exec
:
…
exec env - PATH=$PATH svscan /opt/service 2>&1
Это все еще усложняет задачу остановки / уничтожения / перенастройте "svscanboot" в системе инициализации Entware из-за измененного имени. Это изменение имени процесса exec потребует обходного пути.
Entware-daemontools-init-script может быть изменена на имитацию svscanboot
, например:
ENABLED=yes
#PRECMD="exec /dev/null;exec 2>/dev/null;/opt/bin/svc -dx /opt/service/* /opt/service/*/log"
PROCS="svscan"
ARGS="/opt/service 2>&1"
PATH=/opt/sbin:/opt/bin:/sbin:/bin:/usr/sbin:/usr/bin
PREARGS="env - PATH=$PATH"
DESC="daemontools"
Прокомментированный PRECMD запрещает запуск svscan
.
Если вы используете встроенный HTTP-сервер Flasks, то это объясняется в документации Flask (прокрутите вниз до раздела Externally Visible Server):
Если вы запустите сервер, то заметите, что он доступен только с вашего собственного компьютера, а не с любого другого в сети. Это значение является стандартным, поскольку в режиме отладки пользователь приложения может выполнить произвольный код Python на вашем компьютере.
Если отладчик отключен или вы доверяете пользователям в вашей сети, вы можете сделать сервер общедоступным, просто добавив --host=0.0.0.0 в командную строку:
flask run --host=0.0.0.0
Это указывает вашей операционной системе прослушивать все публичные IP.
Вывод nmap
на вашей машине myserver
показал порт 5000 как открытый, потому что вы использовали nmap localhost
, который сканирует открытые порты на localhost aka 127.0.0.1, а не 192.168.x.x.