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. 나는 그것에 대해 온갖 종류의 chown것들을 시도해 보았지만 chmod아마도 그것이 그것과 관련이 있을 것입니다.

서버가 시작됩니다. 어떻게 실행시키나요 sudo ruby server.rb? sudo도 필요하지 않습니다.

upstart, rc.local 또는 init.d를 사용하여 이를 수행하는 방법에 대한 튜토리얼이 약 천만 개 있는데 단 하나도 작동하지 않았기 때문에 내가 무엇을 하고 있는지 모르겠습니다. 나는 심지어 crontab을 시도했습니다.

현재 내 crontab -e모습은 이렇습니다.

@reboot /home/ubuntu/start.sh

/홈/우분투/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이 시스템에 존재할 뿐만 아니라 번들로 설치되어 있기 때문에 필요한 보석에 PATH를 제공하지 않는 것이라고 장담합니다. bundle exec내 지시문에 사용해야 하며 @reboot, 그렇지 않은 경우 스크립트 실행 전에 $PATH를 어떻게 추가합니까?

편집하다:

Michael의 솔루션을 사용해 보았지만 댓글에 설명된 다양한 이유로 작동하지 않았습니다.

답변1

이것을 시도해 보셨나요:

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

이 방법으로는 괜찮을 것 같습니다.

관련 정보