From 4e9ccb42d739388fe8991c4290db6b2ef8905d3b Mon Sep 17 00:00:00 2001 From: Aart van Halteren Date: Thu, 18 Jul 2013 20:59:46 +0200 Subject: [PATCH] run as daemon --- Gemfile | 1 + Gemfile.lock | 2 ++ daemonize.rb | 8 ++++++++ etc/smartmeter | 11 +++++++++++ 4 files changed, 22 insertions(+) create mode 100644 daemonize.rb create mode 100644 etc/smartmeter diff --git a/Gemfile b/Gemfile index 4dc5442..918f9ce 100644 --- a/Gemfile +++ b/Gemfile @@ -5,3 +5,4 @@ gem "mysql2" gem "serialport" gem "state_pattern" gem 'rufus-scheduler' +gem 'daemons' diff --git a/Gemfile.lock b/Gemfile.lock index 70d38fd..a446b03 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -14,6 +14,7 @@ GEM multi_json (~> 1.0) arel (3.0.2) builder (3.0.4) + daemons (1.1.9) i18n (0.6.1) multi_json (1.7.7) mysql2 (0.3.11) @@ -28,6 +29,7 @@ PLATFORMS DEPENDENCIES activerecord (= 3.2.13) + daemons mysql2 rufus-scheduler serialport diff --git a/daemonize.rb b/daemonize.rb new file mode 100644 index 0000000..cbb1646 --- /dev/null +++ b/daemonize.rb @@ -0,0 +1,8 @@ +require 'rubygems' +require 'daemons' + +pwd = Dir.pwd +Daemons.run_proc('smartmeter', {:dir_mode => :normal, :dir => pwd+"/pids"}) do + Dir.chdir(pwd) + exec "ruby smartmeter.rb" +end diff --git a/etc/smartmeter b/etc/smartmeter new file mode 100644 index 0000000..ad83f8a --- /dev/null +++ b/etc/smartmeter @@ -0,0 +1,11 @@ +#!/bin/bash +# +# Startup script (put in /etc/init.d/smartmeter) +# +# description: Starts Smartmeter as an unprivileged user. +# + +sudo -u www-data ruby /mnt/usb/ruby/smartmeter/daemonize.rb $1 +RETVAL=$? + +exit $RETVAL