如何在ubuntu中将ruby脚本作为服务(包括sinatra)运行? [英] How can I run a ruby script as a service including Sinatra in ubuntu?

查看:26
本文介绍了如何在ubuntu中将ruby脚本作为服务(包括sinatra)运行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经编写了一个脚本,它通过串行接口将我的UPS数据解析为json文件,每5秒无限循环一次:

require 'json'

pipe = IO.popen("apcaccess")

upsdata_h = {}
data = []

while true 

  pipe = IO.popen("apcaccess")
  upsdata_h[:ups] = {}
  data = []

  while (line = pipe.gets)
    data = line.split(':')
    upsdata_h[:ups][data[0].strip] = data[1].strip
  end

  puts "Internal temperature: #{upsdata_h[:ups]['ITEMP']}"

  File.open("upsdata.json", "w") do |f|
    f.write(upsdata_h.to_json)
  end

  sleep 5 

end

我还有另一个小程序,可以用Sinatra创建一个小API:

require 'sinatra'

set :bind, '0.0.0.0'

get '/api/upsdata' do
  content_type :json
  File.read('upsdata.json')
end

我想将它们都作为服务在我的ubuntu服务器15.04中运行。我如何让脚本像ubuntu的其他服务一样永远在后台运行?我是否也应该将Sinatra包括在服务中,以便它在引导时加载?

推荐答案

您可以使用upstart单独启动每个服务。

启动脚本位于/etc/init中,扩展名为.conf,如/etc/init/myscript.conf

这里有一个简单的启动脚本示例:

#!upstart
description "my server"
author      "Me"

start on filesystem
stop on runlevel [!2345]
respawn

script
    /path/to/ruby /path/to/script
end script

此部分就位后,您可以使用start myscript

手动启动服务

这篇关于如何在ubuntu中将ruby脚本作为服务(包括sinatra)运行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆