Ruby アプリケーションで神が処理するいくつかのジョブを作成しました。ただし、サーバーが再起動すると、ジョブは停止します。これを回避したいので、サーバーでこのスクリプトを作成しました。このように見えます。
my_app.sh
#!/bin/bash
# god tasks
#
case $1 in
start)
/usr/local/rvm/gems/ruby-1.9.3-p194/bin/god
/usr/local/rvm/gems/ruby-1.9.3-p194/bin/god start
/usr/local/rvm/gems/ruby-1.9.3-p194/bin/god load /usr/local/Linux/apache2/www/hej.se/ruby/config/resque.god
/usr/local/rvm/gems/ruby-1.9.3-p194/bin/god load /usr/local/Linux/apache2/www/hej.se/ruby/config/resque_schedule.god
;;
esac
exit 0
手動でログインして書くと
「/etc/init.d/my_app 開始」
それは私に与えます
Sending 'start' command
No matching task or group
Sending 'load' command with action 'leave'
The following tasks were affected:
resque-0
resque-1
resque-2
resque-3
resque-4
Sending 'load' command with action 'leave'
The following tasks were affected:
resque_scheduler
そして、すべてが機能し、私がやりたいこと、つまりジョブを実行します。
起動時にこのスクリプトを開始するいくつかの方法 (Linux 10.4.4 LTS)、rc.local、rc-default を試しましたが、最新の試みは crontab です。
スクリプトは、root ではなく自分のユーザーで実行する必要があります (root で実行すると、Ruby のインストールが見つかりません)。
このため、自分のユーザー アカウントで crontab を構成しました。
@reboot /etc/init.d/my_app start
悲しいことに、これは機能しません...私が間違っていることはわかりません。そして、これはおそらく必要ないはずです。ruby アプリケーションの起動時にこれを auto ごとに実行できるようにすべきではないということですか?
このサーバーでパッセンジャーを使用していますが、これが関係しているかどうかわかりません。
shに加えた変更を含む以下のソリューション:
my_app.sh
bash -c "source /usr/local/rvm/scripts/rvm && /usr/local/rvm/gems/ruby-1.9.3-p194/bin/god"
bash -c "source /usr/local/rvm/scripts/rvm && /usr/local/rvm/gems/ruby-1.9.3-p194/bin/god start"
bash -c "source /usr/local/rvm/scripts/rvm && /usr/local/rvm/gems/ruby-1.9.3-p194/bin/god load /usr/local/Linux/apache2/www/hej.se/ruby/config/resque.god"
bash -c "source /usr/local/rvm/scripts/rvm && /usr/local/rvm/gems/ruby-1.9.3-p194/bin/god load /usr/local/Linux/apache2/www/hej.se/ruby/config/resque_schedule.god"