使用腳本啟動 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 介面、一個專業選項,並且在其主頁上有一個非常酷的忍者圖標。

相關內容