helaveesa / daemonization Goto Github PK
View Code? Open in Web Editor NEWThis project forked from rigidus/daemonization
Daemonization lisp-processes (without screen/detachtty)
License: Other
This project forked from rigidus/daemonization
Daemonization lisp-processes (without screen/detachtty)
License: Other
Система в разработке (пока работает только на SBCL/Linux/x86). Система предназначена для инкапсуляции всего функционала связаного с "демонизацией" лисп-процесса без использование screen/detachtty, нацелена на работу на как можно большем кол-ве lisp-систем и операционных систем. А также для запуска и управления демонами из лисп-системы. Во многом базируется на коде из restas-daemon.lisp (который распространяется под лицензией LGPL https://github.com/archimag/restas/blob/master/contrib/restas-daemon.lisp). ------ Требования: --------------------------------------------------------------- Требуется установленный в системе SBCL. Тестировалось в sbcl-1.0.42 и в sbcl-1.0.47. ------ Командный интерфейс для Линукс (в scripts/): ------------------------------ ./daemon.sh <conf-file> <command> <conf-file> - файл содержащий конфигурацию демона в списке свойств (см. scripts/daemon.conf и examples/example1.conf) <command> - одна из следующих команд: start - запуск демона. stop - остановка демона. zap - очистить ресурсы после некорректно завершённой работы (удалить pid файл). kill - аварийная остановка демона (применяется если не срабатывает команда stop). restart - перезапуск демона. status - получить информацию о работе демона. nodaemon - не запускать демон, а только выполнить пользовательский код соответствующий ключу :main-function в конфиге демона (используется для отладочных целей). Пример: ./daemon.sh daemon.conf start ------ Программный интерфейс для Лисп-системы ------------------------------ (daemonized <conf-params> <daemon-command> &key on-error print-extra-status) conf-params - файл с конфигурацией демона или список св-в. daemon-command - команда демонизации, тоже что для командного интерфейса. on-error - одно из сл. значений :return-error :as-ignore-errors :call-error или :exit-from-lisp. По умолчанию :call-error. print-extra-status - позволяет выводить больше информации. По умолчанию NIL. Пример: (daemonization:daemonized '(:pid-file "/home/user/pids/my-pid-file" :main-function #.(lambda (load "/home/user/start-swank.lisp"))) "start") ------ Рекомендации по использованию ---------- 1) Запустить тесты. cd tests/ ./run-tests.sh sudo ./root-run-tests.sh your-user-name В случае успешного прохождения тестов в конце каждого вывода появится сообщение: ... Tests passed. В случае, если тесты не прошли (появится сообщение " ... Tests failed."). В этом случае, пожалуйста, вышлите описание системной конфигурации и логи, которые появятся после запуска в пользовательском (tests-prompts.log, tests-syslog.log) и административном (root-tests-prompts.log, root-tests-syslog.log ) режимах на e-mail ([email protected]). 2) Запустить пример. cd ../examples/ Заменить путь загружаемого файла в example1.conf (например с инициализацией и запуском swank-сервера для работы в Slime) на свой собственный: (:main-function #.(lambda () (load "your-path-you-lisp-or-fasl-file") ... Запустите демон: ./example1.sh start В случае успешного запуска появится сообщение вроде следующего: success started (pid = 29591) Перед ним могут появится сообщения типа "STYLE-WARNING: Couldn't grovel ...". Это никак не связано с системой daemonization, а связано с нюансами работы sbcl. Теперь можно проверить, что демон успешно работает командой status: ./example1.sh status В случае успеха появится сообщение вроде: running (pid = 32668) Если что-то пошло не так и демон не запустился появится одно из следующих сообщений: not-running - no pid file или: not-running Если появилось последнее, то это говорит о том, что файл с записью идентификатора процесса остался, но сам демон по каким-то причинам не запустился. Следы работы демона (в данном случае pid-файл) следует удалить командой zap: ./example1.sh zap Причины по которым не запустился демон скорее всего тривиальны. Проверьте что указан правильный путь к файлу в описанном выше вызове: (load "your-file") и убедитесь в том, что открываемый swank-порт не занят. Если появилось сообщение running и в (load ...) загружался файл с запуском swank-сервера, то можно смело к нему коннектиться. По окончании работы демон останавливается так: ./example1.sh stop В случае успеха должно появится сообщение: success stop В противном случае, в зависимости от ситуации, появится одно из сообщений: failed stop - no pid file или failed stop Теперь команда: ./example1 status Должна вывести сообщение: not-running - no pid file Для быстрого запуска необходимо загрузить asdf-систему в лисп-образ и сохранить его. Для чтения подробных логов можно использовать скрипт contrib/linux/read-log.sh Из Лисп-системы лог инициализации в виде списка можно получить вызвав функцию (daemonization:get-daemon-log-list). Успешного использования! Вопросы и пожелания пишите на [email protected] Для баг репорта используйте https://github.com/LinkFly/daemonization/issues или указанный e-mail.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.