如何在rails中的后台运行rake任务

时间:2013-05-29 14:27:04

标签: ruby-on-rails-3 ruby-on-rails-3.2 rake rake-task

这是我的命令

bundle exec rake resque:work QUEUE="*" --trace

我想在我的服务器上运行此命令作为后台进程。

请帮帮我。

2 个答案:

答案 0 :(得分:23)

我经常使用的方法是:

nohup bundle exec rake resque:work QUEUE="*" --trace > rake.out 2>&1 &

即使退出shell,这也会使任务继续运行。然后如果我想直接观察跟踪输出,我会这样做:

tail -f rake.out

你可以随时检查rake.out。

如果你需要在完成之前杀死它,你可以使用ps找到它并杀死pid。

答案 1 :(得分:2)

以防有人在4年后发现这一点,现在捆绑有一种优雅的方式。例如,如果你想在后台运行sidekiq,你可以这样做:

bundle exec sidekiq -e production -d -L ./log/sidekiq.log 

-d守护进程在后台运行,但您还需要使用-L来提供日志文件,否则Bundler将拒绝在后台运行您的命令(deamonize)。 使用捆绑包版本1.15.4进行测试