1

我想创建一个 cront 选项卡来重新启动我的延迟作业服务器,如果它坏了。

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

我如何创建一个 cron 选项卡来检查这个东西是否有效?就像我的服务器中断时,cron 选项卡将重新启动它。我想设置 cront 选项卡每 5 分钟检查一次。

4

5 回答 5

4

这是我的脚本,它检查是否创建了 pid 文件。如果 pid 文件不存在,它将启动 delay_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 服务器。这是正确的方法吗?

于 2010-06-23T17:45:38.400 回答
2

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

#!/bin/bash

if ! [ -s #{pids_dir}/delayed_job.pid ]; then  
  RAILS_ENV=production #{RAILS_APP}/script/delayed_job start  
fi
于 2010-12-29T10:43:22.083 回答
0

我使用runit/sv来管理delayed_job。包括监控、自动重启、日志记录。

于 2010-06-23T21:31:08.720 回答
0

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

于 2010-06-24T04:03:00.583 回答
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
于 2012-09-21T22:57:18.127 回答