2013-07-30 56 views
3

一些背景故事節目的一個或多個實例(S):DelayedJob錯誤:有已經運行

我的服務器昨晚跑出來的磁盤空間,同時delayed_job的工人流失的工作來處理圖像。

當我試圖阻止工人時,我收到了「已終止」的回覆。

RAILS_ENV=production script/delayed_job stop 
Terminated 

然後我運行以下內容來查看工作人員已被終止。

ps -ef | grep delayed_job 
servername  4474 4274 0 02:37 pts/1 00:00:00 grep --color=auto delayed_job 

現在我嘗試啓動新的工人。

RAILS_ENV=production script/delayed_job -n2 start 
ERROR: there is already one or more instance(s) of the program running 
ERROR: there is already one or more instance(s) of the program running 

這是我得到的錯誤,我不能啓動任何新的工人,即使我好像已經停止了所有活動的工人。

這是困惑我,所以我跑了

RAILS_ENV=production script/delayed_job status 
delayed_job: running [pid 0] 
delayed_job: running [pid 0] 

這似乎是錯誤的[PID 0],好像我的工人已損壞,我希望弄清楚如何來解決這個問題。謝謝!

我在Linux Ubuntu LTS 10.4上運行。

編輯:所以我刪除了我在tmp/pids中找到的2個工作文件,它允許我啓動和停止工作。但是,工作人員不會運行任何東西,因爲我相信我需要在tmp文件夾中生成PID文件。

+1

所以我刪除了我在tmp/pids /中的2個工作文件,這允許我創建工作人員,但是,我相信我需要在它運行作業之前生成一些pid文件。 – jim

回答

4

我跑這個命令來解決這一問題:

RAILS_ENV=production script/delayed_job -n 2 --pid-dir=tmp/pids restart 

通過指定它是能夠解決的缺乏PID文件的問題的目錄。

2

在該文件中放入一些隨機pid(不是現有進程的pid),然後嘗試啓動守護進程。你會看到類似的消息:

pid-file for killed process 32323123 found (/path/to/pid/file), deleting.

和您的守護進程將開始。