запустить скрипт Ruby / EventMachine как системный сервис - PullRequest
3 голосов
/ 24 декабря 2010

Я написал простой UDP-сервер на Ruby с использованием EventMachine. Я бы хотел, чтобы он всегда работал на моем компьютере с Linux. Предложения о том, как обернуть это как системную службу или в какую-либо другую форму, которая запускается при запуске, продолжает работать, можно отслеживать?

Ответы [ 4 ]

2 голосов
/ 24 декабря 2010

Поскольку вы используете Linux, вы можете использовать демонов драгоценных камней

http://daemons.rubyforge.org/

http://railscasts.com/episodes/129-custom-daemon

1 голос
/ 24 декабря 2010

Веб-сервер Thin , построенный поверх EventMachine, использует гем daemons : https://github.com/macournoyer/thin/blob/master/lib/thin/daemonizing.rb

Чтобы поддерживать его работу, используйте Monit , который можно настроить для проверки того, что процесс запущен, перезапустить его, если он не запущен, или перезапустить, если он начинает использовать слишком много системных ресурсов, или бесконечный массив других возможных условий.

0 голосов
/ 25 марта 2014

Все эти ответы устарели. В Ruby есть идеальный метод Process.daemon: http://www.ruby -doc.org / core-2.1.0 / Process.html # method-c-daemon

Просто добавьте Process.daemon в ваше приложение до EM.run, и все должно работать.

0 голосов
/ 24 декабря 2010

Я бы использовал Cron с [@restart] [1]. Хорошо ведущий себя демон должен проверить, запущен ли он, прежде чем снова запускать.

[1]: https://help.ubuntu.com/community/CronHowto#Advanced Crontab

...