使用脚本启动 Resque 工作程序不起作用,手动启动可以

使用脚本启动 Resque 工作程序不起作用,手动启动可以

我试图弄清楚为什么我的过程如果通过脚本启动则无法工作,但如果手动启动则可以正常工作。

详细信息如下:

script 是一个 resque 工作启动脚本。脚本位置是/etc/monit/conf.d/start_resque.sh。权限为755,归ubuntu所有:ubuntu

当我运行脚本时,日志输出会获取一个 pid,并显示“正在启动工作程序 ip-xx-xxx-xxx-xx:26732(或任何 pid )”,但是当我 ps aux | grep 26732,没有显示任何正在运行的内容。当我在 Rails 项目目录中手动运行相同的命令时,会显示相同的“启动工作程序”输出,并且该进程实际上已启动并继续运行。需要注意的一件事是,如果手动启动,则会显示附加输出:“nohup:忽略输入”

有人可能可以帮助解决的另一个问题是,为什么 Behind=yes 实际上并没有守护我的工作人员......因此我求助于 nohup,这似乎工作正常。

这是我的脚本(我手动运行的命令在 cd 之后):

#!/bin/bash
echo "starting worker.."
workercount="$(ps aux | grep -c resque)"
currentdir="/var/www/apps/myapp/current"
logdir=$currentdir/log/resque_worker.log
pidfile=$currentdir/tmp/pids/resque_worker_$workercount.pid
cd $currentdir
nohup bundle exec rake environment resque:work RAILS_ENV=production QUEUE='*' VERBOSE=1 PIDFILE=$pidfile >> $logdir 2>&1 &
echo "started worker $workercount! view log at $logdir. view pidfile at $pidfile"

ssh附加说明:在 Ubuntu 12.04 上,并在运行脚本和手动命令时通过连接。

答案1

好吧,我切换到了 Sidekiq,它“正常工作”。在resque和部署上浪费了很多时间,但我获得了一些经验,并且几乎提高了我的系统管理技能。 Sidekiq 似乎是一个更好的选择 - 它利用了线程的优势,并且有一个很棒的 wiki、更新的 Web 界面、一个专业选项,并且在其主页上有一个非常酷的忍者图标。

相关内容