Ubuntu-Ruby Daemonスクリプトは2つのプロセスを作成します-shとruby-PIDファイルはrubyではなくshを指します
デーモンとして実行しているルビープロセスのPIDファイルが間違ったPIDを取得しています。実行/etc/init.d/sinatra startすると2つのプロセス- shとが作成rubyされ、PIDファイルで終わるPIDはshプロセスのPIDになります。これは、次に/etc/init.d/sinatra stopまたはを実行すると/etc/init.d/sinatra restart、shを強制終了し、rubyプロセスを実行したままにすることを意味します。 私は、a)スクリプトが2つのプロセス(shとrubyだけでなく、rubyだけでなく)を起動する理由、およびb)単にrubyを起動するように修正する方法を知りたいのですが? セットアップの詳細: デーモンとして実行されているubuntuサーバー上に小さなSinatraサーバーがセットアップされています。自動的にサーバの起動時に名前のスクリプトを実行するように設定されているsinatra中で/etc/init.dそれが制御スクリプト起動control.rbし、サーバーを起動するルビーデーモンコマンドを実行します。スクリプトは、「sinatrauser」アカウントで実行されます。このアカウントには、スクリプトに必要なディレクトリへのアクセス許可があります。 /etc/init.d/sinatraの内容 #!/bin/bash # sinatra Startup script for Sinatra server. sudo -u sinatrauser ruby /var/www/sinatra/control.rb $1 RETVAL=$? exit $RETVAL このスクリプトをインストールするには、単にコピーして/etc/init.d/実行しました sudo update-rc.d sinatra defaults /var/www/sinatra/control.rbの内容 require 'rubygems' require 'daemons' pwd = Dir.pwd Daemons.run_proc('sinatraserver.rb', {:dir_mode => :normal, :dir => "/opt/pids/sinatra"}) do Dir.chdir(pwd) exec 'ruby …