【问题标题】:DelayedJob ERROR: there is already one or more instance(s) of the program runningDelayedJob 错误:已经有一个或多个正在运行的程序实例
【发布时间】:2013-07-30 00:51:04
【问题描述】:

一些背景故事:

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

【问题讨论】:

  • 所以我删除了 tmp/pids/ 中的 2 个工作文件,这允许我创建工作人员,但是,我相信我需要生成一些 pid 文件才能运行作业。

标签: ruby-on-rails ruby linux delayed-job web-worker


【解决方案1】:

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

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.

    您的守护程序将启动。

    【讨论】:

      猜你喜欢
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      相关资源
      最近更新 更多