如何在 Ubuntu 中自动运行 ruby​​ 脚本?

如何在 Ubuntu 中自动运行 ruby​​ 脚本?

在启动时运行 ruby​​ 脚本有多难?!

显然相当艰难:

我正在使用rvm并运行 ruby2.3.0​​ 。

which ruby返回/home/ubuntu/.rvm/rubies/ruby-2.3.0/bin/ruby 脚本位置为:/home/redline/sinatra-aggregator/server.rb。我尝试了各种chown方法chmod,也许这与它有关。

服务器启动了。我该如何让它运行sudo ruby server.rb?甚至不需要 sudo。

关于如何使用 upstart、rc.local 或 init.d 进行此操作的教程有大约一千万个,但我不知道自己在做什么,因为没有一个能起作用。我甚至尝试了 crontab。

目前,我的crontab -e样子是这样的:

@reboot /home/ubuntu/start.sh

/home/ubuntu/start.sh:

/home/ubuntu/.rvm/rubies/ruby-2.3.0/bin/ruby /home/ubuntu/sinatra-aggregator/server.rb >> log.txt

顺便说一下,log.txt 始终是空的。

我尝试过类似的rc.local设置init.d

编辑:

我尝试用 运行该软件nohup,它运行正常,但是这是日志的输出:

== Sinatra (v1.4.7) has taken the stage on 3000 for production with backup from Thin
== Sinatra has ended his set (crowd applauds)


    Starting //Blueline Scraper!


Thin web server (v1.6.4 codename Gob Bluth)
Maximum connections set to 1024
Listening on 0.0.0.0:3000, CTRL+C to stop
Stopping ...
Stopping ...
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- sinatra (LoadError)
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from server.rb:2:in `<main>'
ubuntu@ip-172-31-35-95:~/sinatra-aggregator$ 

我敢打赌,RVM 不会以某种方式为我需要的 gem 提供 PATH,因为它们不仅存在于系统中,而且是捆绑安装的。我应该bundle exec@reboot指令中使用吗?如果不行,如何在脚本执行前添加 $PATH?

编辑:

尝试了迈克尔的解决方案,但由于评论中解释的各种原因,没有奏效。

答案1

您是否尝试过这个:

cron /home/redline/sinatra-aggregator/server.rb
cron restart

这样也许能很好地发挥作用。

相关内容