一些背景故事:
我的服务器昨晚耗尽了磁盘空间,而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文件。
答案 0 :(得分:6)
我运行此命令来解决问题:
RAILS_ENV=production script/delayed_job -n 2 --pid-dir=tmp/pids restart
通过指定目录,它可以解决缺少PID文件的问题。
答案 1 :(得分:2)
在该文件中放入一些随机pid(不是现有进程的pid),然后尝试启动您的守护进程。您将看到类似于以下内容的消息:
pid-file for killed process 32323123 found (/path/to/pid/file), deleting.
并且你的守护进程将开始。