在啟動時運行 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
這樣可能會工作得很好。