Ubuntu で Ruby スクリプトを自動実行するにはどうすればよいですか?

Ubuntu で Ruby スクリプトを自動実行するにはどうすればよいですか?

起動時に Ruby スクリプトを実行するのがそんなに難しいことなのでしょうか?

どうやらかなり厳しいようです:

私はrvmruby​​ を使用して実行しています2.3.0

which ruby/home/ubuntu/.rvm/rubies/ruby-2.3.0/bin/ruby スクリプトの場所は です: を返します/home/redline/sinatra-aggregator/server.rb。 さまざまなchownchmodを試してみましたが、おそらくそれが関係しているのでしょう。

サーバーが起動します。どうすれば実行できますかsudo ruby server.rb? sudo も必要ありません。

upstart、rc.local、init.d を使ってこれを行う方法に関するチュートリアルは 1000 万件ほどありますが、どれも機能しないので何をやっているのかわかりません。crontab も試しました。

現在、私のcrontab -e見た目は次のようになります:

@reboot /home/ubuntu/start.sh

Ubuntuを起動します。

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

ちなみに、log.txt は常に空です。

私は同様の設定を試しましたrc.localinit.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$ 

おそらく、必要な gem がシステム上に存在するだけでなくバンドル インストールされているため、RVM が何らかの方法で PATH を提供していないのだと思います。ディレクティブbundle execで を使用する必要があります@rebootか。使用しない場合は、スクリプトの実行前に $PATH を追加するにはどうすればよいでしょうか。

編集:

Michael の解決策を試しましたが、コメントで説明されているさまざまな理由により機能しませんでした。

答え1

これを試しましたか:

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

この方法ではうまくいくかもしれません。

関連情報