У меня есть веб-сервер RingoJS (работает поверх Jetty), который является частью установки обратного прокси-сервера Apache.
Я хотел бы, чтобы несколько процессов Ringo работали автономно в фоновом режиме, автоматически запускались при перезагрузке и т. Д. В принципе, то же самое, что и демоны Apache или Postgresql.
Я исследовал запущенные процессы в фоновом режиме (через & или bg), nohup и использование screen для поддержки нескольких контекстов. Я не уверен, что здесь лучше всего.
Я хотел бы иметь возможность легко идентифицировать (понятное имя) каждый запущенный процесс RingoJS. (по одному для каждого приложения). Тогда вы сможете легко запускать и останавливать их, как это делается с apachectl или чем-то еще. Я бы хотел, чтобы процессы автоматически запускались при перезагрузке, и на них не влияли повторяющиеся сеансы ssh.
Экран кажется хорошим выбором, но этот вариант использования больше подходит для переноса контекстов оболочки, чем для поддержки длительных системных процессов. Я могу запускать задания в фоновом режиме, но беспокоюсь о зомби-процессах после выхода из системы или о загадочных PID, которые не позволяют четко определить, какое приложение / служба запущено.
Может ли кто-нибудь подсказать, что я «должен» делать для достижения этого результата?
Спасибо.
Вы должны создавать службу инициализации. Ubuntu использует выскочку. http://upstart.ubuntu.com/
Для приложений, которые не имеют встроенного метода для запуска в качестве демона, вы, вероятно, захотите использовать старт-стоп-демон в сценарии инициализации / выскочки, который вы создаете для запуска приложения. Вы можете использовать start-stop-daemon для запуска чего-либо в фоновом режиме, он может регистрировать pid в файловой системе, чтобы остановить процесс, когда придет время.
Просто посмотрите /etc/init.d/, чтобы найти множество примеров, в частности, проверьте / etc / init / скелет для шаблона. Многие из существующих сценариев запуска используют start-stop-daemon. В том числе ssh, ntp, rsync и многие другие.