5

一些背景故事:

昨晚我的服务器磁盘空间不足,而 delay_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 文件。

4

2 回答 2

7

我运行了这个命令来解决这个问题:

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

通过指定目录,它能够解决缺少 PID 文件的问题。

于 2013-07-30T05:26:55.267 回答
2

在该文件上放入一些随机 pid(不是现有进程的 pid),然后尝试启动您的守护进程。您将看到类似于以下内容的消息:

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

你的守护进程将启动。

于 2014-03-28T14:58:09.097 回答