0

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"
4

1 に答える 1

2

cronjob は忘れてください。

Centos/Fedora:

sudo chmod a+x /etc/init.d/my_app
sudo chkconfig --add my_app
sudo chkconfig my_app on

Ubuntu/デビアン:

sudo update-rc.d my_app defaults

/etc/rc1.dこれらは両方とも、スクリプトを、などにシンボリック リンクし、これらの/etc/rc2.dランレベルの起動時にスクリプトを実行できるようにします。

于 2012-10-01T08:11:08.377 に答える