Вот мое решение. Я проверяю, запущена ли у вас одна работа или у вас больше одной. Если вы это сделаете, выйдите, иначе начните работу с двумя работниками. Вам, вероятно, не понадобится эта /usr/local/bin/ruby
часть.
#!/bin/bash
if [[ ! -f /apps/gits/myapp/tmp/pids/delayed_job.pid
&& ! -f /apps/gits/myapp/tmp/pids/delayed_job.0.pid ]];
then
echo "DJ not running"
cd /apps/gits/myapp
RAILS_ENV=production /usr/local/bin/ruby script/delayed_job -n 2 start
echo "DJ Started"
else
echo "DJ running"
fi
А потом мой cron запускается каждый час, просто убедитесь, что bash исполняемый.
0 */1 * * * /apps/gits/scripts/start_dj_if_not_running.sh
>> /apps/gits/myapp/log/runner.log 2>&1