如何在 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 沒有以某種方式向我需要的 gems 提供 PATH,因為它們不僅存在於系統上,而且是捆綁安裝的。我應該bundle exec在我的@reboot指令中使用嗎?

編輯:

嘗試了邁克爾的解決方案,但由於評論中解釋的各種原因而不起作用。

答案1

你有沒有嘗試過這個:

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

這樣可能會工作得很好。

相關內容