我使用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 :(得分: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