1

バックグラウンドで簡単なスクリプトを実行したい。マシンの全寿命の間、それは生きている必要があります。

script "my_script" do
interpreter "ruby"
cwd "/home/my_home"
user "root"
code << -EOH
  pid = fork
  if pid
     Process.detach(pid)
     system("ruby the_actual_script.rb > logfile")
  end
EOH

しかし、これは実行されていないようです。実行されてすぐに終了したようです。サイズが 0 のログファイルがあります。cwd フォルダーのアクセス許可を 777 に設定しています。

問題が何であるかを理解できません。シェフがこれを別のシェルで実行し、そのシェルを終了するとすべてのプロセスを削除すると思いますか?

バックグラウンドでスクリプトを単純に実行するより良い方法はありますか?

4

1 に答える 1

3

あなたが説明するものは「サービス」と呼ばれます。たとえば、「cookbook_file」chef リソースを使用して、独自のファイルにスクリプトを配置できます。次に、たとえば Ubuntu システムで upstart を使用して、そのための init スクリプトを記述します。init スクリプトを作成したら、chef の「サービス」リソースを使用して、サービスが常に実行できるようにし、それを作成する最初のchef 実行時にサービスが開始されるようにします。出来上がり!

于 2013-04-01T00:59:11.477 に答える