[英]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.