Executando o loop bash

0

Eu criei um loop while em um script bash para executar alguns comandos PHP. A razão pela qual eu criei o loop while é porque não posso usar o cronjobs (não quero criar uma nova instância do script bash enquanto o outro ainda está em execução).

Anteriormente, eu corri o comando usando a tela, mas parece que, eventualmente, todos os meus recursos estavam comendo por esse processo.

Então minha pergunta é; qual é uma boa alternativa para executar o script bash?

O script é semelhante a:

#!/bin/bash
echo "Starting daemon.."

while true; do
   echo "Running runJobs.."
   cd /var/www/wiki && nice -n 10 /usr/bin/php maintainAll.php maintainwiki runJobs >> /var/log/runJobs.log
   echo "Sleeping 60 seconds.."
   sleep 60
done
    
por Youri 29.01.2014 / 13:21

1 resposta

0

Uma boa alternativa é deixar o PHP fazer o loop, em vez de fazer uma chamada em loop para o PHP.

Realmente, assim que você tiver isso, tudo que você precisa fazer é fazer com que o Ubuntu mantenha uma cópia do script sendo executada de alguma forma. Isso pode ser feito com um script Upstart super simples. Você poderia colocar isso em /etc/init/myphpscript.conf :

description "My PHP script"

start on startup
stop on shutdown
respawn

exec sudo -u www-data -- php -f /path/to/script.php

Note que assim que o PHP sair, o Upstart vai extrair outra cópia, então se você não colocar um sleep no PHP, você estará em um muito rápido, possivelmente muito caro (eu não sei o que seu código faz) loop.

    
por Oli 29.01.2014 / 15:50