我想创建一个 cront 选项卡来重新启动我的延迟作业服务器,如果它坏了。
如何使用 ps 命令检查我的延迟作业服务器是否正在运行?
我如何创建一个 cron 选项卡来检查这个东西是否有效?就像我的服务器中断时,cron 选项卡将重新启动它。我想设置 cront 选项卡每 5 分钟检查一次。
我想创建一个 cront 选项卡来重新启动我的延迟作业服务器,如果它坏了。
如何使用 ps 命令检查我的延迟作业服务器是否正在运行?
我如何创建一个 cron 选项卡来检查这个东西是否有效?就像我的服务器中断时,cron 选项卡将重新启动它。我想设置 cront 选项卡每 5 分钟检查一次。
这是我的脚本,它检查是否创建了 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 服务器。这是正确的方法吗?
如果您有一个 delay_job 进程,正确的方法是:
#!/bin/bash
if ! [ -s #{pids_dir}/delayed_job.pid ]; then
RAILS_ENV=production #{RAILS_APP}/script/delayed_job start
fi
我使用runit/sv来管理delayed_job。包括监控、自动重启、日志记录。
如果你不坚持使用 cron,Monit 可能会更有用。 http://mmoni.com/monit/
这是我的解决方案。我检查您是否开始了一项工作或您有多个。如果你这样做了,就辞职,否则从两个工人开始工作。你可能不需要那个/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