2011-06-17 18 views
7

私は自分のLinuxボックスで常に実行している必要があるRubyスクリプトを持っています。私はnohup ruby ruby.rb&を試しましたが、うまくいかないようです。バックグラウンドでRubyスクリプトを実行する

バックグラウンドでスクリプトを実行するにはどうすればよいですか?

+0

出力が必要ですか? – cmwright

+0

いいえ。しかし、私が "nohup"を実行すると、出力ファイルに結果が表示されるはずですが、私はそうではないと思います。私はちょうどそれが実行されていることを確認したい。 – donald

+0

あなたが最初に&を使ってコマンドを実行したときに&PIDを取得するのですか? – cmwright

答えて

24

コマンドラインユーティリティであるscreenをご覧ください。

screen 

デタッチされた新しいシェルが表示されます。そこにスクリプトを作成してください

ruby whatever.rb 

実行してください。 Ctrlキー - - その後CtrlキーヒットDを、あなたはあなたの元のシェルに戻ってする必要があります。今すぐsshセッションを終了すると、スクリプトは引き続き実行されます。後でボックスにログインし、

screen -r 

と入力してください。取り外したシェルに戻ってください。

画面を複数回使用する場合、画面セッションをpidで選択する必要があります。これはあまり快適ではありません。簡素化するために、あなたはそれを再開するためにセッションを開始し、

screen -r worker 

する

screen -S worker 

を行うことができます。

3

ニーズに応じて:実際の生活の中で

fork do 
    Process.setsid 
    sleep 5 
    puts "In daemon" 
end 
puts "In control script" 

をあなたはSTDOUT/STDERRを再オープンする必要があります。

関連する問題