我想创建一个cront选项卡,以便在delay_job服务器中断时重新启动它。
如何使用ps命令检查我的delayed_job服务器是否正在运行?
我怎样才能创建一个cron选项卡来检查这个东西是否正常工作?就像我的服务器中断而不是cron tab会重启它。我想设置cront tab每5分钟检查一次。
答案 0 :(得分:4)
这是我的脚本,用于检查是否创建了pid文件。如果pid文件不存在,它将启动delayed_job服务器。 我在我的应用程序根文件夹中创建了我的脚本 这是我的脚本delayed_job.sh
if ! [ -s delayed_job.pids ]; then
RAILS_ENV=production /app/script/delayed_job start
end
我已经在crontab上设置了这个脚本。
*/5 * * * * RAILS_ENV=production /bin/bash /app/delayed_job.sh
工作正常。如果我打破delayed_job服务器,它将自动启动我的delayed_job服务器。这是一种正确的方式吗?
答案 1 :(得分:2)
如果你有一个delayed_job进程,正确的方法是:
#!/bin/bash
if ! [ -s #{pids_dir}/delayed_job.pid ]; then
RAILS_ENV=production #{RAILS_APP}/script/delayed_job start
fi
答案 2 :(得分:0)
我使用runit/sv来管理delayed_job。包括监控,自动重启,日志记录。
答案 3 :(得分:0)
如果你不坚持使用cron,Monit可能会更有用。 http://mmonit.com/monit/
答案 4 :(得分:0)
这是我的解决方案。我检查你是否开始了一份工作,或者你有多个工作。如果你这样做,退出,否则就开始与两名工人一起工作。您可能不需要/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