繁体   English   中英

cron选项卡重新启动我的delay_job服务器

[英]cron tab to restart my delayed_job server

我想创建一个cront选项卡,以在中断时重新启动我的delay_job服务器。

如何使用ps命令检查我的delay_job服务器是否正在运行?

我如何创建一个cron选项卡来检查此功能? 就像我的服务器中断一样,cron选项卡将重新启动它。 我想设置cront选项卡每5分钟检查一次。

这是我的脚本,用于检查是否创建了pid文件。 如果pid文件不存在,它将启动delay_job服务器。 我已经在应用程序根文件夹中创建了脚本,这是我的脚本delay_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

一切正常。 如果我中断了delay_job服务器,它将自动启动我的delay_job服务器。 这是正确的方法吗?

如果您有一个delay_job进程,则正确的方法是:

#!/bin/bash

if ! [ -s #{pids_dir}/delayed_job.pid ]; then  
  RAILS_ENV=production #{RAILS_APP}/script/delayed_job start  
fi

这是我的解决方案。 我检查您是否已开始一项工作,或者您是否有一项以上。 如果您这样做,请退出,否则请由两名工作人员开始工作。 您可能不需要/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

我使用runit / sv来管理delay_job 包括监视,自动重启,记录。

如果您不坚持使用cron,Monit可能会更有用。 http://mmonit.com/monit/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM