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

man*_*yal 4 rake rake-task ruby-on-rails-3 ruby-on-rails-3.2

这是我的命令

bundle exec rake resque:work QUEUE="*" --trace
Run Code Online (Sandbox Code Playgroud)

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

请帮我.

lur*_*ker 24

我经常使用的方法是:

nohup bundle exec rake resque:work QUEUE="*" --trace > rake.out 2>&1 &
Run Code Online (Sandbox Code Playgroud)

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

tail -f rake.out
Run Code Online (Sandbox Code Playgroud)

你可以随时检查rake.out.

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


bro*_*rod 5

以防万一有人发现这四年后,bundle现在有一种优雅的方式来做到这一点。例如,如果要在后台运行sidekiq,可以执行以下操作:

bundle exec sidekiq -e production -d -L ./log/sidekiq.log 
Run Code Online (Sandbox Code Playgroud)

-ddaemonizes在后台运行,但你也将需要使用-L提供一个日志文件,否则打捆将拒绝在后台(deamonize)运行命令。使用捆绑程序版本1.15.4测试

更新2019年10月。尽管该命令仍然可以正常使用,但是上面的特定命令在sidekiq 6.0+上将不再起作用,如果使用Linux,则需要使用Upstart或Systemd:https : //github.com/mperham/sidekiq / wiki / Deployment#running-your-own-process