2010-12-22 172 views
1

我使用delayed_job在後臺進程上做了一些工作。我在本地機器上運行相同的項目,它工作正常。但是,我在服務器上運行導致問題。 我還有另一個使用delayed_job的項目,它可以在導致問題的同一臺服務器上正常工作。無法啓動delayed_job服務

以下是例外:

exit 
["/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/daemonize.rb:167:in `exit'", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/daemonize.rb:167:in `call_as_daemon'", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/application.rb:254:in `start_proc'", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/application.rb:294:in `start'", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/controller.rb:70:in `run'", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons.rb:193", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/cmdline.rb:112:in `call'", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons/cmdline.rb:112:in `catch_exceptions'", 
"/usr/lib/ruby/gems/1.8/gems/daemons-1.1.0/lib/daemons.rb:192:in `run_proc'", 
"/usr/lib/ruby/gems/1.8/gems/delayed_job-2.0.3/lib/delayed/command.rb:71:in `run_process'", 
"/usr/lib/ruby/gems/1.8/gems/delayed_job-2.0.3/lib/delayed/command.rb:65:in `daemonize'", 
"/usr/lib/ruby/gems/1.8/gems/delayed_job-2.0.3/lib/delayed/command.rb:63:in `times'", 
"/usr/lib/ruby/gems/1.8/gems/delayed_job-2.0.3/lib/delayed/command.rb:63:in `daemonize'", 
"script/delayed_job:5"] 
delayed_job: process with pid 16880 started. 

回答

0

奇怪的是它並說 '與PID 16880進程啓動'。如果你運行這個:

ps -Alf | grep 16880 

它是否告訴你該過程正在運行?在這種情況下,我會諮詢它正在寫出的日誌文件。

您可能沒有權限啓動該過程?嘗試

sudo RAILS_ENV=production script/delayed_job start 

這不是一個好主意,讓事情的方式在服務器上 - 但它應該告訴你,如果它是與哪個用戶正在運行的DJ過程用戶權限的問題。

而且最重要的是,確保你沒有不小心拿到的delayed_job守護進程運行的幾個實例。不知道是什麼的過程將被調用,但是你可以用ps和grep找到所有實例,然後殺死他們:

ps -Alf | grep delayed_job 

然後,讓我們說你看幾個實例運行,並且第一有一個進程ID 123456

kill -HUP 123456 
+0

感謝您的信息。但是在運行命令啓動服務之後,我通過使用「ps aux | grep'delayed_job'」進行檢查,並且它什麼也沒有顯示。 – tiny 2010-12-22 08:00:54