相关疑难解决方法(0)

在Ruby中生成后台进程

我正在为学校项目编写一个ruby bootstrapping脚本,这个引导过程的一部分是启动一些后台进程(编写并正常运行).我想做的是:

`/path/to/daemon1 &`
`/path/to/daemon2 &`
`/path/to/daemon3 &`
Run Code Online (Sandbox Code Playgroud)

但是,第一次调用时会阻塞执行daemon1.我已经看过一个Process.spawn方法的引用,但这似乎是一个1.9+的功能,我只限于Ruby 1.8.

我也尝试从不同的线程执行这些守护进程,但我希望我的引导脚本能够退出.

那么我怎样才能启动这些后台进程,以便我的引导脚本不会阻塞并且可以退出(但仍然让守护进程在后台运行)?

ruby background-process

40
推荐指数
1
解决办法
2万
查看次数

使用Capistrano开始后台任务

对于我的RubyOnRails-App,我必须在Capistrano部署结束时开始后台工作.为此,我在deploy.rb中尝试了以下内容:

run "nohup #{current_path}/script/runner -e production 'Scheduler.start' &", :pty => true
Run Code Online (Sandbox Code Playgroud)

有时它可以工作,但大多数情况下它不会启动过程(=未在ps -aux中列出).并且没有错误消息.没有nohup.out,不在主目录中,也不在rails app目录中.

我尝试在scheduler.rb而不是nohup中使用trap('SIGHUP','IGNORE'),但结果是一样的.

让它工作的唯一方法是删除":pty => true"并在"cap deploy"结束时执行手动Ctrl-C.但我不喜欢这个......

还有其他机会调用此Scheduler.start吗?或者获取更多错误消息?

我在服务器上使用Rails 2.3.2,Capistrano 2.5.8,Ubuntu Hardy

background capistrano ruby-on-rails nohup

19
推荐指数
3
解决办法
7341
查看次数