У меня есть веб-приложение на сервере freebsd. Приложение - это отдельный исполняемый файл со встроенным веб-сервером. Моя оболочка по умолчанию - zsh.
Когда я запускаю его как «./my_website &» и закрываю соединение, оно завершается. Однако, когда я переключаюсь на bash "/ usr / local / bin / bash" и запустите мой веб-сайт таким же образом "./my_website &", затем выйдите из bash и закройте соединение, мой веб-сайт продолжает работать - именно то, что мне нужно.
Что тут происходит -- почему он продолжает работать в bash после закрытия соединения с моим сервером?
Это хорошая практика - запускать приложение в фоновом режиме таким образом? Если нет, как правильно запустить мой веб-сайт, чтобы он не закрылся после отключения?
Или вы можете запустить его на экране:
screen -dm bash -c '/path/to/your/program'
Это зависит от вашей цели. Если вам нужно запустить этот веб-сервер на короткое время (разработка / тестирование), вы можете использовать screen / tmux и оставить его в открытом сеансе.
Если вы хотите запустить это приложение в производственной среде, лучше написать сценарий запуска. Если это приложение не может демонизировать себя, вы можете использовать демон (8). Рекомендую прочитать Практические сценарии rc.d в BSD, также вы можете найти множество примеров в дереве портов. Чтобы найти rc-скрипты с демоном, вы можете использовать команду find /usr/ports/ -depth 4 -name *.in | xargs fgrep -l /usr/sbin/daemon
Вам нужно использовать nohup
команда
nohup ./my_website &
Это позволит вашему процессу работать после смерти / выхода родительского процесса независимо от оболочки.
Правильный способ - превратить ваше приложение в системную службу и добавить yourapp_enable="YES"
в /etc/rc.conf, чтобы [перезапустить] его автоматически. Видеть Практические сценарии rc.d в BSD статья например.